十个提升MySQL性能的操作

:2025年06月09日 IT那活儿
分享到:

SELECT idFROMusersWHERE age= 25改为SELECTidFROMusersWHERE age= 25UNIONSELECTidFROMusersWHERE age= 30No.5 谨慎使用IN和NOTININ和N…

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!

No.1 避免全盘扫描

当要查询的数据量过大时全盘扫描的效率会很低。应该在 WHERE 和 ORDERBY 涉及的列上添加索引避免全盘扫描,能快速寻找数据。

No.2 避免NULL值判断

在WHERE子句中如果对字段进行NULL值判断索引会不起作用。可以在设计表结构时避免使用NULL值或者设置非空约束再就是给字段设置默认值。

No.3 避免使用 != 或 <>

在WHERE 语句中用 != 和 <> 也会让MySql无法使用索引,最好是改为使用 =, <, > 支持索引的操作符。

No.4 避免OR条件

在WHERE子句中使用OR条件会使MySql索引失效。可以使用UNION来将多个查询合并,或者拆分查询逻辑。

SELECT idFROMusersWHERE age = 25

改为

SELECTidFROMusersWHERE age = 25

UNION

SELECTidFROMusersWHERE age = 30

No.5 谨慎使用IN和NOT IN

IN和NOT IN在处理大集合时,可能导致全盘扫描,特别是当IN内包含大量非连续的值时。为了提高性能,可以用BETWEEN来替代IN,特别是在查询范围较小时。

SELECT id FROM users WHERE age IN (25, 26, 27)

改为

SELECT id FROM users WHERE age BETWEEN 25 AND 27

No.6 LIKE查询优化

LIKE查询在处理部分匹配时可能会全盘扫描。尤其是在使用通配符%作为开头时(如%abc%),MySQL无法使用索引,需要逐行匹配字符串。

避免使用%abc%或%abc,最好限制符号留在后缀位 (abc%)。

No.7 避免参数化查询导致全盘扫描

参数化查询可能会让MySQL无法充分利用索引,可以通过在查询中明确指定使用的索引来避免这个问题。

No.8 避免表达式操作

在WHERE语句中对字段进行表达式操作会使索引失效,应避免在查询条件中使用这样的操作。如果需要对某个字段进行计算,最好在应用程序层完成计算,并将结果传递给查询,而不是在查询中进行计算或使用函数。

No.9 使用EXISTS替代IN

当涉及子查询时,EXISTS比IN在某些情况下效率更高, EXISTS一旦找到符合条件的记录,就会停止进一步的查找,而IN则必须先执行整个子查询,然后将结果返回。

No.10 索引数量控制

虽然索引能够加快SELECT查询的速度,但过多的索引会影响表的INSERT和UPDATE操作性能。因为每次数据的插入、更新、删除都会使索引同步更新。通常一个表的索引数量最好不超过6个。

END

本文作者:刘 宸(上海新炬中北团队

本文来源:“IT那活儿”公众号

[我要纠错]
[编辑:宋聪乔 &发表于江苏]
关键词: 点击 上方 活儿 公众 专注

来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。

点个赞
0
踩一脚
0

您在阅读:十个提升MySQL性能的操作

Copyright©2013-2025  JSedu114 All Rights Reserved. 江苏教育信息综合发布查询平台保留所有权利

苏公网安备32010402000125 苏ICP备14051488号-3技术支持:南京博盛蓝睿网络科技有限公司

南京思必达教育科技有限公司版权所有   百度统计

最热文章
最新文章
  • 阿里云上云钜惠,云产品享最低成本,有需要联系,
  • 卡尔蔡司镜片优惠店,镜片价格低
  • 苹果原装手机壳