首页
学习
活动
专区
圈层
工具
发布

大数据干货 SQL优化方案精解十则

一、避免NULL判断

WHERE子句中对字段进行NULL判断会使索引失效,导致全表扫描。建议字段尽量设为NOT NULL并赋予默认值(如数字默认0)。注意:变长字段(varchar)中NULL不占空间,定长字段(char)无论是否为空都占固定空间。备注、描述等可酌情留NULL。

二、禁用SELECT *

会增加解析成本,返回不必要字段(如text类型),拖慢传输效率。只查询所需字段。

三、谨慎使用模糊查询

LIKE以'%'开头时索引失效;不以'%'开头则索引有效。

四、避免使用列号(如ORDER BY 1)

增加解析开销,可读性差。

五、优先UNION ALL而非UNION

UNION会去重,耗时更多;若业务无重复或允许重复,务必使用UNION ALL。

六、索引列避免计算

WHERE或ORDER BY中对索引列进行运算会使索引失效,应将计算值提前处理好再传入。

七、用NOT EXISTS替代NOT IN

NOT IN导致内外表全表扫描,NOT EXISTS仍可利用索引。

八、EXISTS与IN选择

IN适用外表大、内表小;EXISTS适用外表小、内表大。两表大小相近时性能差异不大。

九、索引列禁忌

避免使用IS NULL / IS NOT NULL,避免数据类型自动转换(如字符串字段传入数值),否则索引失效。

十、复杂SQL拆分

多层嵌套子查询影响性能,可拆分为多条SQL或将部分逻辑交由程序处理,提升可维护性与效率。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OrS_aT7QOw_JmEblZhCDdyzA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券