Mysql优化
limit对于越大的offset查询越慢
场景:
导出数据的时候,利用select * from table limit ${offset},${limit}
,但是当offset越来越大的时候(比如100万),查询非常耗时。
解决思路:
组合主键不满足最左前缀
项目实践中,发现如果是组合主键的话,按照最左前缀去查询也不能使用到索引,不知为什么???所以一般最好建立组合索引去按照最左前缀查询。
修改组合索引顺序来满足最左前缀
项目中发现有大量下面的查询:
但是message表的组合索引为:
很明显无法满足最左前缀原则,由于id字段很少用到,我们将组合索引改为:
这样上面那么大量的查询就可以用到索引提高查询效率了。
分表
对于数据量较大的表可以进行分表,比如使用id%100分布到100张表里面,增加查询和插入效率。
Last updated