我需要在MySQL上執行一個大的SELECT WHERE IN查詢,我需要它快速運行。我有一個超過1億行的表,主鍵在varchar 127上(並且必須這樣)。優化大型MySQL SELECT WHERE IN語句
我正在執行SELECT col1 FROM table WHERE col1 IN($ in)其中$ in有5000個值。我基本上只需要找到主鍵col1中的表中的5,000個值中的哪一個。
查詢通常需要1到10秒,但通常約爲7或8秒。
是否有一個更優化,快速的方式來執行選擇大型IN子句大型表索引varchar?
我正在使用InnoDB與PHP和PDO的專用服務器。感謝您的建議。
您是否曾嘗試將'$ IN'變量中的值放入臨時表中,其中主鍵是值?加入此表可能有助於提高性能。另外,還有多少行被返回?如果結果集相當大,那麼可能會花費時間檢索數據,而不是生成結果集。 –
這些值是否是任意的?也就是說,可能在WHERE開始處添加值,並且在IN子句中添加一些最大值 – Mihai
Gordon,我還沒有嘗試過,並且需要爲我拼寫的步驟,因爲我相對較新大型的mysql表。 5000人中有1000人到5000人之間的人通常會返回,這是相當大的回報。 – Guy