mysql 字段索引的问题
问题描述
在sf看到篇文章里面有这么一段关于数据表索引的
KEY `idx_status_date` (`status`,`date`)
我想问下 上面的写法 和下面的写法 有什么区别么?
KEY `status` (`status`),KEY `date` (`date`)
问题解答
回答1:一个是组合索引 一个单个字段建立索引 建议你搜索下 组合索引和单个索引类似的文章,主要这个问题解释起来文字太多,你自己去看下网上资料!
回答2:组合索引跟单字段索引有很大不同 , 组合索引有顺序的组合索引对于搜索条件为
status = 0 AND date= 'XXXX'或者status = 0这两种情况都有效
但是对于date='XXX'的话就没什么用了而且组合索引只能有一个范围搜索,这个如果要说起码要很长, 抽空看看'高性能MySQL'吧 , 里面有介绍
回答3:KEY idx_status_date (status,date)组合索引能说为组合,当然是组合使用的使用才能最大生效第一,组合索引必定有顺序之分就像上面那个,status和date作为组合索引在where status = ’1’ and date = ’2017-01-01’的时候,组合索引就会生效。但假如你的搜索条件中,date在status前面,那么索引只会生效一部分因为mysql检测到status作为索引,但无法使用date索引
而单个索引就更好理解只有你搜索字段哪个建立索引,哪个生效
你可以使用explian 看mysql语句索引使用情况
相关文章:
1. javascript - js中数组的undefined为什么不会被遍历2. 求救一下,用新版的phpstudy,数据库过段时间会消失是什么情况?3. javascript - 如何将一个长为365的数组对象按月份切割成12组?4. css3不包括5. java - 如何分割形如(operator arg1 arg2 ... argn)的字符串?6. thinkphp中Controller里面使用Request::File(’image’);7. java - 做一个视频播放器,想实现一个功能,如果3秒不点击屏幕任何,则下方一个界面布局(显示按钮那些的)自动消失。8. 编辑管理员信息时,为什么没有修改过的内容会为空?9. mysql - 看这条sql有可能被注入吗10. java 如何列出jar包中jar包里的所有文件和目录?

网公网安备