select count(*) from attachment where status = 1;
表中有大约 45k 行。他们的大部分状态值都聚集在值 1 中,大约有 37k 行。
此查询耗时约 30 毫秒,属于高频调用。
那么我是否可以通过向 status
列添加索引来调整性能,或者如何调整性能?
答案 0 :(得分:3)
您可以尝试在 daw_attachment(status)
上建立索引。但是,这只会用扫描索引代替扫描表。这更快,但优化器仍需要读取所有 37k 值。
另一种方法是使用触发器来维护其他表中的计数。每当修改表时都会产生开销。如果更新非常频繁,触发器可能会影响性能。