索引最左列特征的一点认识
2016-05-13 13:07
477 查看
索取最左列特性,的秘密都在于顺序排序与存储这个最简单的道理。
比如有表tabname上有ABC三个列是这样的。
行号 A B C
0 1 A e
1 2 7 G
2 9 5 7
3 5 0 4
Alter table tabname add index idx1(A,B,C)
用A,B,C三个单列组合成一个辅助索引idx1。这时idx的存放是根据排序规则,比如utf8_unicode_ci,对A列的顺序进行存放。这里是按数字大小顺序由小到大,重新排序A列为1,2,5,9,也就行号0,1,3,2后,建立idx,
这时如果要查找,a>5,自然就很简单。如果要查a>1 and B<10也可以走这个索引。
但如果要只查b=7,这就跟这个idx1索引的存储方式没有关系了而要直接去走扫描主键索引。
另外,为什么索引列上的字符字段不能进行进行 like '%str',而可以进行 like 'str%'这样的查询呢?这也跟存储的顺序有关。
like '%str'这种查询方法,模糊了存储的排序。。而 like 'str%'则是指定了从排序s处开始找。
比如有表tabname上有ABC三个列是这样的。
行号 A B C
0 1 A e
1 2 7 G
2 9 5 7
3 5 0 4
Alter table tabname add index idx1(A,B,C)
用A,B,C三个单列组合成一个辅助索引idx1。这时idx的存放是根据排序规则,比如utf8_unicode_ci,对A列的顺序进行存放。这里是按数字大小顺序由小到大,重新排序A列为1,2,5,9,也就行号0,1,3,2后,建立idx,
这时如果要查找,a>5,自然就很简单。如果要查a>1 and B<10也可以走这个索引。
但如果要只查b=7,这就跟这个idx1索引的存储方式没有关系了而要直接去走扫描主键索引。
另外,为什么索引列上的字符字段不能进行进行 like '%str',而可以进行 like 'str%'这样的查询呢?这也跟存储的顺序有关。
like '%str'这种查询方法,模糊了存储的排序。。而 like 'str%'则是指定了从排序s处开始找。
相关文章推荐
- 上海2014科目二注意事项及经验浅谈(龙泉驾校)
- 【Unix网络编程】socket函数与描述符
- google浏览器截图工具 Open Screenshot(代码截图)
- 剑指offer 面试题20:顺时针打印矩阵及其变形(LeetCode54. Spiral Matrix旋转矩阵) 题解
- 对象克隆
- Android EventBus
- Android 系统名字、版本、API level的对应关系
- IOS:FMDB使用databaseQueue实现数据库操作线程安全
- Python配置OpenCV
- SWT 事件综述
- 基础知识:七、Fragment
- jupyter
- 漫谈 Clustering (3): Gaussian Mixture Model高斯混合模型GMM
- 292. Nim Game
- 利用response设置HTTP头
- PHP简单实现无限级分类的方法
- hihocoder 1038 01背包
- Oracle Instant Client与PL/SQL配合远程连接oracle
- 多渠道打包
- CentOS 安装nginx