mysql explain执行计划详解
2018-08-03 07:36:36来源:博客园 阅读 ()
一 : explann执行计划详解
(1) - like '%xx' # like模糊匹配
select * from tb1 where name like '%cn'; # 不走索引
select * from tb1 where name like 'cn%'; # 走索引
结论: %前面有实际值的走索引,%在前面的不走索引
(2) - 使用mysql内置函数
select * from tb1 where reverse(name) = 'wupixi'; # reverse 相反
结论: 不可在查询条件处使用mysql内置函数
(3) - 查询数据表中某列时间
nid name ctime
2016-9-10 11:59
当前时间:
2016/9/10
select * from tb1 where conv(ctime,'.,..') = time; # 不可转数据表中时间列的类型
# 转成
select * from tb1 where ctime = 转(2016/9/10)=> 2016-9-10 # 应转当前时间的类型
结论: 把数据表中时间列转换了索引就不存在了
(4) - or
select * from tb1 where nid = 1 or email = 'seven@live.com'; # 当两列是为索引时,才会走索引
特别的:当or条件中有未建立索引的列才失效,以下会走索引
select * from tb1 where nid = 1 or name = 'seven'; # index 合并索引
select * from tb1 where nid = 1 or email = 'seven@live.com' and name = 'alex'
结论: 当两列是为索引时,才会走索引,一般都是index 合并索引
(5) - 类型不一致
select * from tb1 where name = 999;
结论: 如果列是字符串类型,传入条件是必须用引号引起来,不然...
(6) - != (不等于)
select * from tb1 where name != 'abc'
特别的:如果是主键,则还是会走索引
结论: 在使用!=的情况下,只有主键会走索引
(7) - > (大于)
select * from tb1 where name > 'abc'
特别的:如果是主键或索引是整数类型,则还是会走索引
select * from tb1 where nid > 123 # 索引为整数
结论: 如果是主键或索引是整数类型,则还是会走索引
(8) - order by
select email from tb1 order by name desc;
当根据索引排序时候,选择的映射如果不是索引,则不走索引
特别的:如果对主键排序,则还是走索引:
结论: 当根据索引排序时候,选择的映射如果不是索引,则不走索引,如果是则走索引,如果对主键排序,则还是走索引
(9) - 组合索引最左前缀
如果组合索引为:(name,email)
name and email -- 使用索引
name -- 使用索引
email -- 不使用索引
结论: 最左前缀
(10) - 其他注意事项
- 避免使用select *
- count(1)或count(列) 代替 count(*)
- 创建表时尽量时 char 代替 varchar
- 表的字段顺序固定长度的字段优先
- 组合索引代替多个单列索引(经常使用多个条件查询时)
- 尽量使用短索引 # 指定索引执行长度
- 使用连接(JOIN)来代替子查询(Sub-Queries)
- 连表时注意条件类型需一致
- 索引散列值(重复少)不适合建索引,例:性别不适合(男,女)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 链接 Mysql 创建 数据库和创表,增加数据 2019-08-13
- 10道Python常见面试题 2019-07-24
- IDLE与pycharm执行相同代码结果却不同,原因分析 2019-07-24
- 用Python递归做个多层次的文件执行 2019-07-24
- python虚拟环境virtualenv下安装MySQL-python(1.2.3) 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash