表中有超過200萬條記錄。如何在不編制更多字段的情況下提高計數性能?
我想統計表中有多少錯誤(帶勾選)以及有多少錯誤已被檢查。
我做兩個查詢:
SELECT count(*) as CountError FROM table WHERE checked = 1 AND error != ''
-
SELECT count(*) as Checked FROM table WHERE checked = 1
的表現實在是太慢了,它需要大約5分鐘即可得出結果。如何改善?
我已經有UPDATE性能的status
字段的索引。
如果我在checked
字段索引 - 那麼更新性能將受到影響,我不想這樣做。
更新發生比SELECT更多。
表中Innob
購買更多硬件。不,真的 - 你不能無所事事,所以如果你不願意做出權衡,你需要改變問題的限制。使用'memcache'或更快的機器,或升級數據庫軟件... – Borealid 2012-02-20 19:51:55
這是一個非常基本的查詢。沒有索引'checked'或'error',你就無能爲力。 @Borealid好吧,只需要購買更多的硬件... – 2012-02-20 19:53:01
如果添加索引節省的資源大於添加索引的資源成本,請添加索引。一般而言,您會發現添加索引比獲得成本更有利。除非您可以量化沒有全面儲蓄,否則我通常會在添加所需內容方面犯錯,而不是過度「擔心」對更新的影響。 – MatBailie 2012-02-20 20:07:56