寫過的最復雜的sql 一個復雜的查詢sql速度會比把sql建立成視圖來查詢速度更快嗎?
一個復雜的查詢sql速度會比把sql建立成視圖來查詢速度更快嗎?如果是普通的視圖,與復雜SQL的查詢區(qū)別就在于視圖減少了復雜SQL長語句的傳輸,在99.99%的情況下你是很難測出兩者的區(qū)別,或者可以說
一個復雜的查詢sql速度會比把sql建立成視圖來查詢速度更快嗎?
如果是普通的視圖,與復雜SQL的查詢區(qū)別就在于視圖減少了復雜SQL長語句的傳輸,在99.99%的情況下你是很難測出兩者的區(qū)別,或者可以說在當下這些服務器和帶寬的狀態(tài)下,可以直接忽略這個細微的效率影響,當成一致即可。
樓上有人說到物化視圖,先說明,這個是在oracle里面才特有的一個視圖,它是占用物理存儲的,在MySQL里面是沒有物化視圖等手段,但是可以通過一個簡單的轉(zhuǎn)換達到差不多的效果,MySQL可以觸發(fā)器 存儲過程去跑出一個表,這個表映射出來查詢。
其實SQL的優(yōu)化要考慮比較多方面,結(jié)合起來處理才能真正消除慢SQL。
復雜的sql語句怎么寫?
1、select * from 表 where year(列名) = year(getdate())-1 and month(列名)= 3 --這個比較容易理解,就不解釋了
2、select datepart(wk,dateadd(year,-1,getdate())) -- 去年的今天是去年的第幾周
select datepart(wk,dateadd(day,1-day(dateadd(year,-1,getdate())),dateadd(year,-1,getdate()))) -- 去年的本月的1號是去年的第幾周
select datepart(wk,dateadd(year,-1,getdate())) - datepart(wk,dateadd(day,1-day(dateadd(year,-1,getdate())),dateadd(year,-1,getdate()))) --上邊兩者相減就是去年的今天是去年本月的第幾周