select * from logs where uid in (id1, id2, ...)
查詢,但我擔心的性能,如果有一個在中(列表很多IDS),好比說在2000 IDS,即使按照解釋的輸出,這種說法確實使用索引在uid列上。 我想知道是否有其他方式來查詢它與這種條件,或如何做一些優化這個SQL語句?
任何答案表示讚賞。
補充:表格格式是myisam,出於某種原因,我無法更改存儲引擎。
select * from logs where uid in (id1, id2, ...)
查詢,但我擔心的性能,如果有一個在中(列表很多IDS),好比說在2000 IDS,即使按照解釋的輸出,這種說法確實使用索引在uid列上。 我想知道是否有其他方式來查詢它與這種條件,或如何做一些優化這個SQL語句?
任何答案表示讚賞。
補充:表格格式是myisam,出於某種原因,我無法更改存儲引擎。
我已經在上面的評論中提到一個鏈接到類似的問題。
此外,這種類型的查詢應該在MySQL中用於加速某些類型的JOINS。查詢的結果可以很容易地被查詢緩存緩存,從而加速您網站上的重複連接(即,當您將連接拆分爲幾個較小的查詢時,其中一個查詢的緩存結果不斷失效,但是其他則相當穩定)。 IN
運算符對操作數進行排序以減少隨機索引讀取。
您應該真正關心的唯一事情是將整數作爲整數而不是字符串傳遞,以便操作數能夠正確排序。
你有問題嗎? – 2012-01-05 06:24:01
如果()中的ids來自某個條件下的另一個表,則可以使用join。如果uid來自任意用戶輸入,我認爲你不能做太多的工作 – 2012-01-05 06:26:22
@andreas是的,這些id來自另一個數據源。如果我將它們分爲「uid = id1或uid = id2或....」,它會有幫助嗎? – hago 2012-01-05 06:32:25