SQL语句及数据库优化
admin
2023-06-10 03:22:21
0次

 1,统一SQL语句的写法

对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的。 所以封装成复用方法,用标准模板来控制。

select*from dual 

select*From dual

其实就是大小写不同,查询分析器就认为是两句不同的SQL语句,必须进行两次解析。生成2个执行计划

2,不要把SQL语句写得太复杂

我经常看到,从数据库中捕捉到的一条SQL语句打印出来有2张A4纸这么长。一般来说这么复杂的语句通常都是有问题的。我拿着这2页长的SQL语句去请教原作者,结果他说时间太长,他一时也看不懂了。可想而知,连原作者都有可能看糊涂的SQL语句,数据库也一样会看糊涂。

 

比如 Select语句的结果作为子集

简化SQL语句的重要方法就是采用临时表暂存中间结果,但是,临时表的好处远远不止这些,将临时结果暂存在临时表,后面的查询就在tempdb中了,这可以避免程序中多次扫描主表 也大大减少了程序执行中“共享锁”阻塞“更新锁”,减少了阻塞,提高了并发性能。

 

3,必须采用绑定变量 

select*from orderheader where changetime >‘2010-10-20 00:00:01‘ 
select*from orderheader where changetime >‘2010-09-22 00:00:01‘


以上两句语句,查询优化器认为是不同的SQL语句,需要解析两次。如果采用绑定变量

select*from orderheader where changetime >@chgtime

 

4,使用like进行模糊查询时应注意

有的时候会需要进行一些模糊查询比如

select*from contact where username like ‘%yue%’

 关键词%yue%,由于yue前面用到了“%”,因此该查询必然走全表扫描,除非必要,否则不要在关键词前加%,

 

5,联表查询

(1)    连接字段尽量选择聚集索引所在的字段

(2)    仔细考虑where条件,尽量减小A、B表的结果集

 获取下载地址  springmvc+mybatis+spring 整合 bootstrap html5

6,索引,

看sql 的性能,主要看执行计划,还有cpu成本,io成本等。这里就以一个简单的表为例。

首先,创建一个简单的表,一般会先建个主键,系统自动以主键建聚集索引。

判断是否需要优化sql的一个简单规则是:看执行计划中的操作是seek(搜索)还是scan(扫描)

是scan的话就要索引。

 

使用场景:

当一个系统查询比较频繁,而新建,修改等操作比较少时,可以创建覆盖索引,将查询字段和where子句里的字段全部包含在内,这样查询的速度会比以前快很多,同时也带来弊端,就是新建或修改等操作时,比没有索引或没有建立覆盖索引时的要慢。读写数据库分离也能解决问题

 

经常对Creator_Id字段查询,就做个索引。

对表Article的Creator_Id字段建索引

CREATE INDEX Ix_article_creatorid ON Article(Creator_Id)

set statistics io 和 set statistics,这是性能调优时查看相关cpu占用时间,IO资源数据的两个比较重要的命令

 

记得Order by 语句加索引

 

7,读写分离

 

当主数据库进行写操作时,数据要同步到从的数据库,这样才能有效保证数据库完整性

主从分离,对数据库层面就是数据同步或者是数据复制;从应用层讲就是请求的分离:增删改请求主库,查询请求从库

 

8,尽量不用select * from …..

 

,而要写字段名 select field1,field2,…这条没什么好说的,主要是按需查询,不要返回不必要的列和行。

 

9 任何对列的操作都将导致表扫描,

它包括数据库函数、计算表达式等,查询时要尽可能将操作移至等号右边

10 In 、or子句常会使索引失效

显而易见的,IN,OR扩大的查询范围。

11通常情况下,连接比子查询效率要高

必然的,需要子查询时,也是用临时表暂存中间结果


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...