mysql 字段索引的问题
高洛峰
高洛峰 2017-04-17 16:46:08
[MySQL讨论组]

在sf看到篇文章
里面有这么一段关于数据表索引的

KEY `idx_status_date` (`status`,`date`)

我想问下 上面的写法 和下面的写法 有什么区别么?

KEY `status` (`status`),
KEY `date` (`date`)
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
怪我咯

一个是组合索引 一个单个字段建立索引 建议你搜索下 组合索引和单个索引类似的文章,主要这个问题解释起来文字太多,你自己去看下网上资料!

阿神

组合索引跟单字段索引有很大不同 , 组合索引有顺序的
组合索引对于搜索条件为

status = 0 AND date= "XXXX"
或者status = 0
这两种情况都有效

但是对于date="XXX"的话就没什么用了
而且组合索引只能有一个范围搜索,这个如果要说起码要很长, 抽空看看"高性能MySQL"吧 , 里面有介绍

高洛峰

KEY idx_status_date (status,date)
组合索引
能说为组合,当然是组合使用的使用才能最大生效
第一,组合索引必定有顺序之分
就像上面那个,status和date作为组合索引
在where status = '1' and date = '2017-01-01'的时候,组合索引就会生效。
但假如你的搜索条件中,date在status前面,那么索引只会生效一部分
因为mysql检测到status作为索引,但无法使用date索引

而单个索引就更好理解
只有你搜索字段哪个建立索引,哪个生效

你可以使用explian 看mysql语句索引使用情况

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号