mysql 如何建索引索引 (面试题)
PHPz
PHPz 2017-04-17 11:07:00
[MySQL讨论组]

where a=1 and b=1
where b=1
where b=1 order by time desc

请问这三条sql 如何建索引
只建一条怎么建

还有一个问题 就是 mysql 优化器会自动调整 where 条件的前后顺序吗

PHPz
PHPz

学习是最好的投资!

全部回复(4)
PHP中文网

一条的话 ... Index( b, time, a ) 联合索引 ...

MySQL 优化器不会自动调整 WHERE 的先后顺序 ... 所以需要你自己写的时候注意 ...

ringa_lee

b_time

btimea对于第一个查询还是用不上a的index,只能用b的。

第2个和第3个都全能用了。

两个的话就好弄了 ab 和btime。

PHP中文网

具体问题具体分析吧,mysql版本之间的差别比较大,需要针对不同的版本要看对索引的支持如何,
这三条查询中,b字段的查询频率最高,所以b字段要加入到索引中,多列索引中,索引的列顺序很重要。
只想建立单个索引,index(b,time)最合适。
“where a=1 and b=1”应该改为“where b=1 and a=1”

伊谢尔伦

如果只建一个索引,个人认为只在 b 列建索引即可。

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

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