看你知道不知道之 你注意Where子句的次序了嗎?

2021-09-05 14:37:57 字數 718 閱讀 5652

這個系列越來越多的是和sql語句相關的問題了,因為這段時間工作和這個有關,呵呵,不管那麼多了,反正,都是和開發相關的問題,就繼續吧。

我們通常不太注意sql語句中where子句的次序問題,但是這個次序往往會影響整個sql語句的執行效能,舉個例子吧。

比如有乙個表有3個列,分別是班級、學號、姓名。

表中的資料共100條,其中1班50人,學號從1到50,二班50人,學號從1到50。

那麼現在的任務是在表中找到1班學號為10的學生,查詢語句就有兩種寫法。

1:select 姓名 from 學生表 where 班級=1 and 學號=10

2:select 姓名 from 學生表 where 學號=10 and 班級=1 

雖然返回的結果一樣,但是這兩個到底那個好呢?

衡量乙個sql語句好與壞,主要看效能,而影響select語句的通常是table scan,我們來看看到底執行了幾次table scan。

1:100+50=150,首先掃瞄全表找到50個1班的,然後早掃瞄50次找到學號為10的。

2:100+2=102,首先掃瞄全表找到2個10號的,然後掃瞄2次找到班級為1班的。

呵呵,這就說明在where子句中應該先處理查詢範圍大的,然後處理查詢範圍小的,就像開車下坡是越來越快的。

當然這個也並不絕對,因為如果優化了索引,table scan就會減輕,並根據索引進行where子句的優化,但是無論是否索引,我們都應該養成這個好習慣,難道不是嗎?

不知道不知道

函式分析 希爾伯特 哥德爾不完備定理 哥德爾不完全性定理一舉粉碎了數學家兩千年來的信念。他告訴我們,真與可證是兩個概念。可證的一定是真的,但真的不一定可證。某種意義上,悖論的陰影將永遠伴隨著我們。無怪乎大數學家外爾發出這樣的感嘆 上帝是存在的,因為數學無疑是相容的 魔鬼也是存在的,因為我們不能證明這...

不知道不知道

函式分析 希爾伯特 哥德爾不完備定理 哥德爾不完全性定理一舉粉碎了數學家兩千年來的信念。他告訴我們,真與可證是兩個概念。可證的一定是真的,但真的不一定可證。某種意義上,悖論的陰影將永遠伴隨著我們。無怪乎大數學家外爾發出這樣的感嘆 上帝是存在的,因為數學無疑是相容的 魔鬼也是存在的,因為我們不能證明這...

看你知道不知道之 別惹我Msgbox的Title

在vb6中,msgbox是比較討厭的,我在整理 的時候,通常要檢查每個msgbox的title是否正確,因為不同的程式設計師有不同的習慣,有些人也願意省略,到底有沒有辦法達到msgbox中title的統一呢?答 當然有辦法了,一種是在vb6的工程裡邊設定好工程的名稱,然後所有的msgbox全部全部省...