SQL優化案例150811

2021-07-31 10:58:33 字數 561 閱讀 5224

最近遇到個sql 跑的很慢,第一次12秒出結果(從磁碟讀入記憶體),第二次2秒出結果(資料都在buffer cache裡面),sql**如下

[html]

view plain

copy

print?

select count(0) from p left join r on 

p.id= r

.id; 

p 有200w 資料 r 有 100w 資料。這個sql 第一次跑12秒,肯定無法接受。 那麼大家看看這個sql如何優化?

其實這個sql寫得有問題, 這裡是外連線,並且求count(*) 還有,join欄位是id,id 一般都是主鍵,那麼這個sql完全可以改寫 為

[html]

view plain

copy

print?

select count(0) from p; 

改寫之後 count(*) 直接讀取 p表主鍵,0.1秒--1秒出結果,當然了,請注意,如果r表id不是主鍵,並且r表id 有重複值,count(*) 會變大 ,不能這麼改寫

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

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

SQL優化案例 RowNumber分頁

將業務語句翻譯成sql語句不僅是一門技術,還是一門藝術。下面拿我們程式開發工程師最常用的row number 分頁作為乙個典型案例來說明。先來看看我們最常見的分頁的樣子 的確,這樣的寫法很符合我們的思維邏輯,並且我們在recid上建立非聚集索引,那麼它的效率看上去也是不錯的。當然根據這條sql,最佳...

SQL 優化案例之變更表結構

從慢日誌報表中看到一條很長的sql select id from myinfo where 1 1 and substring index location axis,3 like concat 2334 or substring index location axis,3 like concat ...