我可以用这种方式调整这个 SQL 吗?

时间:2021-04-25 02:50:39

标签: mysql sql performance query-optimization

select count(*) from attachment where status = 1;

表中有大约 45k 行。他们的大部分状态值都聚集在值 1 中,大约有 37k 行。

此查询耗时约 30 毫秒,属于高频调用。

那么我是否可以通过向 status 列添加索引来调整性能,或者如何调整性能?

1 个答案:

答案 0 :(得分:3)

您可以尝试在 daw_attachment(status) 上建立索引。但是,这只会用扫描索引代替扫描表。这更快,但优化器仍需要读取所有 37k 值。

另一种方法是使用触发器来维护其他表中的计数。每当修改表时都会产生开销。如果更新非常频繁,触发器可能会影响性能。

相关问题