編輯: 所以這是我使用查詢:優化MySQL查詢與IN子句爲10000條記錄
SELECT *
FROM contacts
WHERE id in
(
SELECT DISTINCT contacts.id
from contacts INNER
JOIN contacts2tags ON contacts.id = contacts2tags.contactid
WHERE (tagid in (178)))
它運行很慢。建議優化它? 我已經添加了索引,但它仍然需要改進!
聯繫人表包含id,first_name,last_name,..and 標籤表包含id,name。 contacts2tags表中包含的ContactID和標籤識別哪些是相同contacts.id和tags.id分別 說明:
請看看:optimise mysql query with LIKE operator for 10k records
這是愚蠢的我張貼的一部分在這裏查詢。對不起:P
你可以把創建語法表格聯繫人和聯繫人標籤以及查詢中的解釋。既然你使用了會有一個文件夾和臨時表。所以,這也取決於你的服務器容量。 –
我希望你有一個關於c.id和t.tagid索引的索引,在這種情況下,我希望MySQL能夠找到contacts2tags表上的記錄,然後將這些記錄與聯繫人聯繫起來。如果在t.tagid上沒有索引,而是在t.contactid上有一個索引,則它必須在一個或另一個表上執行非鍵控搜索,具體取決於它首先使用哪個索引。 – Kickstart
謝謝。我確實在索引編號和編號 – user415