[转载]高性能MySQL索引教程3(SQL技巧)

更新:2018年07月03日 17:44 随笔 阅读(0)
标签: @MySQL @索引 @索引优化 #作者: 未知
高性能MySQL索引教程3(SQL技巧)
1.避免
select *
消耗cpu,io,内存,带宽;
count(1)和count(primary_key) 优于 count(*)
很多人为了统计记录条数,就使用 count(1) 和 count(primary_key) 而不是 count(*) ,他们认为这样性能更好,其实这是一个误区。对于有些场景,这样做可能性能会更差,应为数据库对 count(*) 计数操作做了一些特别的优化。
2.union all 替代 union
union 和 union all 的差异主要是前者需要将两个(或者多个)结果集合并后再进行唯一性过滤操作,这就会涉及到排序,增加大量的 CPU 运算,加大资源消耗及延迟。
3.避免类型隐式转换
4.避免where子句中进行函数操作
这将导致引擎放弃使用索引而进行全表扫描。
例:查询138开头手机号
SELECT phone FROM guide_phone_info WHERE SUBSTR(phone,1,3) = '138'
执行计划:
23
优化语句
SELECT * FROM guide_phone_info WHERE phone LIKE '138%'
24
同样的问题(不在索引做列运算):
select id where age +1 = 10
修改为
select id where age = 9
5. OR改写为IN
in和or所在列有索引或者主键的话,or和in没啥差别,执行计划和执行时间都几乎一样。如果in和or所在列没有索引的话,性能差别就很大了。在没有索引的情况下,随着in或者or后面的数据量越多,in的效率不会有太大的下降,但是or会随着记录越多的话性能下降非常厉害,从第三中测试情况中可以很明显地看出了,基本上是指数级增长。
因此在给in和or的效率下定义的时候,应该再加上一个条件,就是所在的列是否有索引或者是否是主键。如果有索引或者主键性能没啥差别,如果没有索引,性能差别不是一点点!
感谢阅读本文,若本文对你有所帮助,不妨将其推荐给好友,与好友一起分享。
文章仅做学习交流使用,若您认为文章存在侵权或不合法行为等,请及时联系我们。
文章之版权归其合法拥者所有。转载原创内容无需联系本站站长,请注明原文出处及链接。
#原文:[我心动了] http://www.wxdl.cn/mysql-sql-jiqiao.html
更新:2018年07月03日 17:44 随笔 阅读(0)
标签: @MySQL @索引 @索引优化 #作者: 未知

阅读延伸

[转载]高性能MySQL索引教程3(SQL技巧)

高性能MySQL索引教程3(SQL技巧)
标签: @MySQL @索引 @索引优化 随笔 未知 05月02日 21:18 继续阅读

[转载]高性能MySQL索引教程2(建立高性能索引)

高性能MySQL索引教程2(建立高性能索引)
标签: @MySQL @索引 @索引优化 随笔 未知 05月02日 21:18 继续阅读

[转载]高性能MySQL索引教程1(执行计划)

高性能MySQL索引教程1(执行计划)
标签: @MySQL @索引 @索引优化 随笔 未知 05月02日 21:18 继续阅读

修改mysql导入文件大小限制 | 夜猫子

mysql脚本导入导出是大家经常用到的功能,但常用的phpmyadmin默认设置最大导入脚本大小是2M。
如果是本地开发环境,有时候可能满足不了我们的需求,我们可能需要导入一个比较大的sql脚本(大于系统默认最大值)
标签: @mysql @导入脚本 随笔 夜猫子 05月02日 21:18 继续阅读

[转载]Windows下面配置ApachePHPMySqlPhpMyAdmin详细过程 | kkx58

现在估计很多人用集成的apache,但是我还是喜欢用独立的安装包,虽然麻烦点,但是稳定性好,一下是我的详细配置情况,软件全部装在D盘。