假設我想根據與該內容關聯的user_id從內容表中查詢數據 - 但我想通過多個用戶獲取內容。多重平等測試與MySQL中連接的效率
SELECT field1, field2, ... fieldn
FROM content
WHERE user_id=1 OR user_id=2 OR ...
在我看來,這是相對有效的......達到一個點。假設content
表的記錄大於200k,我對50個特定用戶的記錄感興趣。像以下這樣的查詢是否仍然有效?
SELECT field1, field2, ... fieldn
FROM content
WHERE user_id=1 OR ... OR user_id=50
我正在考慮創建一個users_group表,像這樣:
CREATE TABLE users_group (
group_id int(11),
user_id int(11),
primary_key(group_id,user_id)
);
...以及與用戶的軟件有興趣的團體填充它
然後我可以做像這樣的查詢:
SELECT field1, field2, ... fieldn
FROM content c
INNER JOIN users_group ug ON c.user_id=ug.user_id
WHERE ug.group_id=1
這會更有效嗎?
這只是一個句法變化,優化器會查看這個和一系列OR語句一樣的 – 2011-05-18 21:17:21
同意。這是他的問題的一個不好的答案。我認爲正確的答案是'這更有效'。數據庫必須以某種方式獲取這些信息,並且提供的速度會更快。儘管如此,假設索引工作正常,對200K記錄也不會產生重大影響。 – 2011-05-18 21:26:39