ZhangZhihui's Blog  

🔧 一、SQL语句层面的优化

1. 只查询所需字段,避免使用 SELECT *性字段

2. 尽可能早地使用 WHERE 过滤掉不必要的数据

3. 避免函数包裹列,因为函数处理会导致无法命中索引

4. 避免隐式类型转换,确保字段与常量类型一致,因为数据库自动转换导致索引失效

5. 用LIMIT限制返回记录数

6. 避免在WHERE、JOIN中使用非等值条件

7. 将WHERE、JOIN中的逻辑或运算(OR)改写为UNION操作

8. 减少嵌套子查询,尽量改为 JOIN,如果非用不可,要注意EXISTS/IN子查询返回的结果集大小,结果集大时用EXISTS,结果集小时用IN

9. 对频繁重复使用的查询使用临时表


📈 二、索引优化

1. 创建合适的索引

  • 常用于 JOIN、WHERE、ORDER BY、GROUP BY 的字段应考虑建索引。

2. 使用覆盖索引

  • 查询字段完全包含在索引中时,避免回表,提高效率。

3. 避免冗余索引与重复索引

4. 避免在低基数列上建索引

    • 比如性别字段,只有男女两个值,不适合建索引。

💾 三、数据层面优化

1. 分区表 / 分区索引

  • 针对大表按日期、区域等划分,减少扫描数据量。

2. 物化视图

  • 将复杂计算结果提前物化,适合用于频繁使用的分析结果。

3. 预聚合表

  • 对每日、每小时进行聚合,避免实时聚合大数据。

 

posted on 2025-07-27 09:52  ZhangZhihuiAAA  阅读(17)  评论(0)    收藏  举报