10条SQL优化语句,让你的数据库跑得更快!
来源:互联网 发布:网络打印机添加ip 编辑:程序博客网 时间:2024/05/20 12:49
例: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';
低效查询
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);
SELECT * FROM t WHERE name LIKE '%de%';
----->
SELECT * FROM t WHERE name LIKE 'de%';
目前只有MySQL5.7支持全文索引(支持中文)
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;
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 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');
- 10条SQL优化语句,让你的数据库跑得更快!
- 【MySQL】10条SQL优化语句,让你的MySQL数据库跑得更快!
- 【MySQL】10条SQL优化语句,让你的MySQL数据库跑得更快!
- 数据库优化----如何让你的SQL运行得更快
- 如何让你的SQL运行得更快--数据库优化常见问题举例
- 让MySQL数据库跑得更快的7条优化建议!
- 如何才能让你的SQL运行得更快(sql语句运行在sybase数据库下)
- 如何让你的SQL运行得更快
- 如何让你的SQL运行得更快 zz
- 如何让你的SQL运行得更快
- 如何让你的SQL运行得更快
- 如何让你的SQL运行得更快
- 如何让你的SQL运行得更快
- 如何让你的SQL运行得更快
- 如何让你的SQL运行得更快!
- 如何让你的SQL运行得更快[转帖]
- 如何让你的SQL运行得更快
- 如何让你的SQL运行得更快
- centos 6 NFS 搭建
- 配置远程工具访问kubernetes集群
- Picasso和Glide的介绍及比较
- JAVA-main方法
- NYOJ 301 递推求值【矩阵快速幂取模】
- 10条SQL优化语句,让你的数据库跑得更快!
- LeetCode No.392 Is Subsequence
- AHOI2016 迷宫
- android:contentDescription的作用是什么
- File类方法总结
- 事件分发之扫描自定义注解实现观察者模式注册
- 位运算
- Fly文件保存视图状态和保存目录树勾选状态
- php http