我使用MySQL,为时已太晚,直到我意识到查询花了太长时间来响应所需的列作为索引。
我理解索引的工作方式,但我想知道索引是否可以以COUNT(*)或COUNT(col1)的方式实现,其中col1被索引,这与执行&#39一样快;哪里COL = 007' ?
我问这个是因为在我的应用程序中我经常需要进行计数查询。为了加快操作流程,需要减少响应。
答案 0 :(得分:1)
您说您了解索引的工作方式。但我认为这也是聚合函数如何工作的问题。
让我们说你做了
SELECT count(col) FROM table;
它做什么?可能它会将该表中的每个col显示为 count ,而 count 会执行
counter++;
某处。这是一个相当快速的操作。
计数查询的速度取决于每行可以显示给计数功能的速度。 col 上的索引不会影响速度,因为无论如何都必须扫描 table 的每一行。索引只是一种比完整的表扫描更快地查找某些行的方法。
另一方面,快速查询如
SELECT count(col) FROM table WHERE col="rare value";
很快,因为
SELECT col FROM table WHERE col="rare value";
也很快。
我希望这对你有意义。否则,为什么不向我们提供更多详细信息,我们会尝试和实际查询?