MYSQL查询优化

1、2、3、8经常使用到

学习参考博客 https://dbaplus.cn/news-155-1531-1.html

1、一定要有主键;

2、适当添加索引;

3、尽量保持查询简单且只返回必需的数据;

(1)、避免使用SELECT *,(2)加上LIMIT限制;

4、适当用多个小表代替一个大表;

5、批量插入代替循环单条插入(大批量的数据插入的时候使用);

6、优化limit分页(没看出效果);

a、原sql:

SELECT product_name from jh_product ORDER BY pid LIMIT 16000,1000

b、优化sql:

SELECT jh_product.product_name

FROM jh_product INNER JOIN (

SELECT pid from jh_product ORDER BY pid LIMIT 1999,1000

) AS tmp USING(pid);

7、如果在上次的查询中获取到了数据的位置,可以用>代替limit;

a、SELECT id FROM t LIMIT 10000, 10;

b、SELECT id FROM t WHERE id > 10000 LIMIT 10;

8、表的left join 关联顺序会影响速度,可以尝试指定关联顺序;

9、对于部分使用了嵌套循环的业务逻辑,查询出的datatable的数据走循环非常卡顿,可以将datatable的数据转换成dataview的数据类型,再使用RowFilter去检索出所需要的数据;

//查询出所有需要的数据,将数据类型转换成DataView
var newView = new DataTable().AsDataView();
//从DataView中筛选出id为1的数据(从view中取出数据,不需要每次都去查询数据库)
dsPromotionDetail4.RowFilter = $"id = {promotionId4?.ToString().DBReplace()}";
//将view数据转换为实际使用的datatable数据
var dtPromotionDetail4 = dsPromotionDetail4.ToTable();

10、适当的分解关联查询(例如将LEFT JOIN 分解成两条查询语句);

发布了18 篇原创文章 · 获赞 0 · 访问量 266
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览