Sql 語句優化

2021-07-30 15:52:50 字數 2348 閱讀 9234

工作轉眼一年多了,回頭看看以前寫的**覺得有必要整合一下sql,提高些許效能,下面是總結的一些經驗,經供參考

sql 1:select * from file where file_type ="dcm"

or file_type ="json"

result: time: 0.007s

sql 2:select * from file where file_type in ("dcm" ,"json")

result:time: 0.010s

結論:差別不大

sql 1: select * from instance  left

join series on series.pk=instance.series_pk

result :time: 0.024s
sql 2:select * from series  right

join instance on series.pk=instance.series_pk

result : time: 0.016s
sql 3:select * from series  left

join instance on series.pk=instance.series_pk

result : time: 0.014s
sql 4:select * from instance right

join series on series.pk=instance.series_pk

結論: left join 小表在前,大表在後, right join 大表在前,小表在後。

sql 1 :select * from instance where series_pk in(select pk from series where modality="ct")
result :time: 0.009s

sql 2 :select * from instance where

exists(select pk from series where series_pk=series.pk and modality="ct")

result : time: 0.017s

結論:與網上exists 效率比 in 高 不符合,實際情況,在環境下選擇。

4.1 表的字段唯一約束

4.2 查詢中與其它表關聯的字段

4.3 查詢中排序的字段

4.4 查詢中統計或分組統計的字段

5.1 表記錄太少

5.2經常插入、刪除、修改的表

5.3 資料重複且分布平均的表字段

5 .建立索引時需要注意的問題

5.1 最常用作限制條件的列放在最左邊,依次遞減。

5.2 索引不會包含有null值的列

5.3 適用短索引

5.4 排序的索引問題 --資料庫預設排序可以符合要求的情況下不要使用排序操作,盡量不要包含多個列的排序,如果需要最好給這些列建立復合索引。

5.5 like語句操作

5.6 不要在列上進行運算

5.7 不使用not in和操作

5.1 union並不絕對比or的執行效率高

select * from series where modality ="ct" or modality="mr"

result:time: 0.001s

sql 2:select * from series where modality ="dcm"

union

select * from series where modality ="mr"

result:time: 0.003s

sql 3:select * from series where modality ="ct"

or study_pk=62

result:time: 0.001s

sql 4: select * from series where modality ="dcm"

union

select * from series where study_pk=62

SQL 語句優化 OR 語句優化案例

從上海來到溫州,看了前幾天監控的sql語句和資料變化,發現有一條語句的io次數很大,達到了150萬次io,而兩個表的資料也就不到20萬,為何有如此多的io次數,下面是執行語句 select ws.nodeid,wi.laststepid,wi.curstepid from workflowinfo ...

sql語句優化!

1.不要使用in操作符,這樣資料庫會進行全表掃瞄,推薦方案 在業務密集的sql當中盡量不採用in操作符 a 改為 a 4.is null 或is not null操作 判斷字段是否為空 5.及 操作符 大於或小於操作符 大於或小於操作符一般情況下是不用調整的,因為它有索引就會採用索引查詢,但有的情況...

SQL語句優化

explain sql 反饋sql語句執行資訊 1 優化 select min id as nid,uid pmzongfen updatetime picid gg from qd mouldu qd sell limit 1 select uid pmzongfen updatetime pic...