我有以下兩個SQLS對大數據集的持續運行:索引三列不同
SELECT * FROM table t WHERE (deleted = 1 OR blocked = 1) AND active = 1;
SELECT * FROM table t WHERE active = 1 AND deleted = 0 AND blocked = 0;
表目前只對ID的主鍵 - 我要補充什麼索引來提高性能這些查詢? (現在他們需要3分鐘大約一百萬條記錄)。
我一直在思考索引:
(deleted, active)
(blocked, active)
(active, deleted, blocked)
我想這將解決這一問題,但是,這不是太多索引? mysql表有很多索引時如何表現行爲?
'(active,deleted,blocked)'應該完成這項工作。 –
不是真的,因爲它如何索引首先刪除,活躍的第二? –
我認爲這實際上取決於你對'活躍','封鎖'和'刪除'記錄的數據分佈。活動/總比率如何?你有沒有嘗試添加一個'主動'索引? –