首页 / MYSQL / mysql优化的一些基本语法
mysql优化的一些基本语法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql优化的一些基本语法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2374字,纯文字阅读大概需要4分钟。
内容图文
![mysql优化的一些基本语法](/upload/InfoBanner/zyjiaocheng/463/7eacf7b23969432fb1ef6ea2416ef769.jpg)
2.SQL语句独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低;
3.SQL语句可以有不同的写法;
下面是我总结的一些SQL常见的优化方法,每个案例都简单易懂,在开发过程中可以作为参考:
不使用子查询
例:SELECT * FROM t1 WHERE id (SELECT id FROM t2 WHERE name=‘hechunyang‘);
子查询在MySQL5.5版本里,内部执行计划器是这样执行的:先查外表再匹配内表,而不是先查内表t2,当外表的数据很大时,查询速度会非常慢。
在MariaDB10/MySQL5.6版本里,采用join关联方式对其进行了优化,这条SQL会自动转换为
SELECT t1.* FROM t1 JOIN t2 ON t1.id = t2.id;
但请注意的是:优化只针对SELECT有效,对UPDATE/DELETE子查询无效,固生产环境应避免使用子查询
避免函数索引
例:SELECT * FROM t WHERE YEAR(d) >= 2016;
由于MySQL不像Oracle那样支持函数索引,即使d字段有索引,也会直接全表扫描。
应改为----->
SELECT * FROM t WHERE d >= ‘2016-01-01‘;
用IN来替换OR
低效查询
SELECT * FROM t WHERE LOC_ID = 10 OR LOC_ID = 20 OR LOC_ID = 30;
----->
高效查询
SELECT * FROM t WHERE LOC_IN IN (10,20,30);
LIKE双百分号无法使用到索引
SELECT * FROM t WHERE name LIKE ‘%de%‘;
----->
SELECT * FROM t WHERE name LIKE ‘de%‘;
目前只有MySQL5.7支持全文索引(支持中文)
读取适当的记录LIMIT M,N
SELECT * FROM t WHERE 1;
----->
SELECT * FROM t WHERE 1 LIMIT 10;
避免数据类型不一致
SELECT * FROM t WHERE id = ‘19‘;
----->
SELECT * FROM t WHERE id = 19;
分组统计可以禁止排序
SELECT goods_id,count(*) FROM t GROUP BY goods_id;
默认情况下,MySQL对所有GROUP BY col1,col2...的字段进行排序。如果查询包括GROUP BY,想要避免排序结果的消耗,则可以指定ORDER BY NULL禁止排序。
----->
SELECT goods_id,count(*) FROM t GROUP BY goods_id ORDER BY NULL;
避免随机取记录
SELECT * FROM t1 WHERE 1=1 ORDER BY RAND() LIMIT 4;
MySQL不支持函数索引,会导致全表扫描
----->
SELECT * FROM t1 WHERE id >= CEIL(RAND()*1000) LIMIT 4;
禁止不必要的ORDER BY排序
SELECT count(1) FROM user u LEFT JOIN user_info i ON u.id = i.user_id WHERE 1 = 1 ORDER BY u.create_time DESC;
----->
SELECT count(1) FROM user u LEFT JOIN user_info i ON u.id = i.user_id;
批量INSERT插入
INSERT INTO t (id, name) VALUES(1,‘Bea‘);
INSERT INTO t (id, name) VALUES(2,‘Belle‘);
INSERT INTO t (id, name) VALUES(3,‘Bernice‘);
----->
INSERT INTO t (id, name) VALUES(1,‘Bea‘), (2,‘Belle‘),(3,‘Bernice‘);
mysql优化的一些基本语法
标签:
本文系统来源:http://www.cnblogs.com/xinboke/p/5422093.html
内容总结
以上是互联网集市为您收集整理的mysql优化的一些基本语法全部内容,希望文章能够帮你解决mysql优化的一些基本语法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。