mysql性能优化(持续更新)

查询大数据表的优化:

操作: 查询条件放到子查询中,子查询只查主键ID,然后使用子查询中确定的主键关联查询其他的属性字段;

原理: 减少回表操作;

-- 优化前SQL,要17S
SELECT  各种字段
FROM`table_name`
WHERE 各种条件
LIMIT0,10;
-- 优化后SQL,要300ms
SELECT  各种字段
FROM`table_name` main_tale
RIGHTJOIN
(
SELECT  子查询只查主键
FROM`table_name`
WHERE 各种条件
LIMIT0,10;
) temp_table ON temp_table.主键 = main_table.主键

原因总结:

查询到索引叶子节点数据。根据叶子节点上的主键值去聚簇索引上查询需要的全部字段值。

参考资料:

1.https://explainextended.com/2009/10/23/mysql-order-by-limit-performance-late-row-lookups/

2.https://dev.mysql.com/doc/refman/5.7/en/innodb-information-schema-buffer-pool-tables.html

mysql性能优化(持续更新)

上一篇:Pikahu-SQL注入模块(Sql inject)(知识普及篇)


下一篇:MySQL高可用性 —— keepalived HA mysql集群(双主)