2015-04-04 64 views
0

比方說,我有一個名爲dict的表格,其中列表word按字母順序排列。在SQL搜索中,列中的數據順序是否重要?

ID | word | definition 
1 a  a's def 
2 b  b's def 
3 c  c's def 

然後我運行一個查詢SELECT * FROM dict WHERE word="a";

比方說,我在該表中的百萬行的。通過性能,如果word列中的數據按字母順序排序,或者SQL甚至在乎數據是否已排序並因此速度相同,我的查詢運行速度會更快嗎?

+0

你是什麼意思,它是按字母順序排序?可能存儲(因此爲'ID')?無論如何,我認爲這不重要。 – potashin 2015-04-04 20:45:33

+0

我的意思是'''''''''''列中的所有數據都按字母順序排序。 – Zip 2015-04-04 20:47:04

+0

調查*戈登*的答案,這個問題不能解釋得更好。 – potashin 2015-04-04 20:48:15

回答

4

SQL表格表示無序集合。所以,實際上並沒有一個表格按照特定順序的概念(至少在你知道聚集索引是什麼的情況下)。

如果你希望你的查詢運行速度更快,對word創建一個索引:

create index idx_dict_word on dict(word) 

這將查找索引字(非常快)。然後獲取正確的話。

至於你的問題,如果單詞出現在表掃描開始附近,你可能會開始更快地得到結果。但是,查詢必須通過整個表格,所以排序與查詢完成無關。

+0

如果查詢未搜索符合查詢中設置條件的所有單詞,該怎麼辦?但只有一個特定的詞。例如, '''SELECT定義FROM dict where word =「a」;''' – Zip 2015-04-04 20:49:31

+1

沒關係。沒有索引(或約束),查詢引擎不知道有多少行匹配該條件,因此它必須檢查所有行。 – 2015-04-04 20:57:17