我正在使用带有“状态”列的表,它通常只包含 2 或 3 个不同的值。有时,当这个表包含几百万行时,下面的 SQL 语句会变慢(我假设完成了全表扫描):
SELECT state, count(*) FROM mytable GROUP BY state
我希望得到这样的东西:
disabled | 500000
enabled | 2000000
(基本上我想知道有多少项目被“启用”以及有多少项目被“禁用” - 实际上这是一个数字而不是我实际应用程序中的文本)
我想为我的状态列添加索引是没有用的,因为在那里只能找到很少的不同值。我还有什么其他选择?
还有一个“时间戳”列(带有索引)。理想情况下,如果我添加,该解决方案也应该可以正常工作:
WHERE timestamp BETWEEN x AND y
现在我正在使用 SQLite3 数据库,但看起来其他数据库引擎并没有太大的不同,因此其他数据库引擎的解决方案也可能很有趣。
谢谢!