sql语句优化的十二条建议
admin
2023-05-27 16:21:40
0

1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0

2.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20

 

3下面的查询也将导致全表扫描:
select id from t where name like '%abc%'
若要提高效率,可以考虑全文检索。

 

4.in 和 not in 也要慎用,否则会导致全表扫描,如:
select id from t where num in(1,2,3)
对于连续的数值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3

 

 

5.应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:
select id from t where num/2=100
应改为:
select id from t where num=100*2

 

 

6.很多时候用 exists 代替 in 是一个好的选择:
select num from a where num in(select num from b)
7.用下面的语句替换:
select num from a where exists(select 1 from b where num=a.num)

 

 

 

8.索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。

 

 


9.尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。

 

10.任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。

 

11.避免频繁创建和删除临时表,以减少系统表资源的消耗。

12.临时表并不是不可使用,适当地使用它们可以使某些例程更有效,例如,当需要重复引用大型表或常用表中的某个数据集时。但是,对于一次性事件,最好使用导出表。

 


相关内容

热门资讯

算力短缺催热“卖水人” 经纬天... 2026年以来,AI智能体(Agent)的大规模落地,正在让Token从“便宜货”变成“硬通货”。与...
湖南石门强降雨搜救持续:村民守... 澎湃新闻记者 廖艳 实习生 林霄自5月17日7时起,湖南常德石门县遭遇极端强降雨天气,瞬时雨量大、致...
美新远程空空导弹初露真容,能缓... 澎湃新闻特约撰稿 王若鸿近日,美国一位航空摄影师拍摄到几架从佛罗里达州埃格林空军基地起飞的美国海军测...
官方通报福建漳州“泡药杨梅”事... 【大河财立方消息】 5月20日晚,福建漳州市食品安全委员会办公室通报:5月15日,媒体报道反映漳州市...
山河湖海,算算生态环境的“三本... 【大河财立方 记者 程帅星 北京报道】 5月20日下午,国务院新闻办公室举行2026年“新征程上的奋...
官方通报“儿童乳膏涉嫌非法添加... 【大河财立方消息】针对今年3月媒体反映广西十安生物科技有限公司生产的“消字号”产品涉嫌非法添加问题,...
山西通报“明长城被露天煤矿长期... 5月20日,山西宁武县委宣传部发布情况通报:近日,有媒体报道神达朝凯煤业相关问题。宁武县委、县政府高...
国务院被掏空,美国外交陷入“空... ◆在美国国务卿鲁比奥的主导下,国务院正全面围绕特朗普的核心议程进行改革。(图源:美联社)文/方晨宇编...
美军“尼米兹”号航母进入加勒比... 新华社华盛顿5月20日电(记者黄强 徐剑梅)美军南方司令部20日在社交媒体发布消息说,美军“尼米兹”...
28个暴雨红色预警信号生效中,... 20日晚,粤西到珠三角南部一带强降水仍在持续,暖湿气流源源不断补充,导致新生成的强降雨云团不断在同一...