GROUP BY 对大型数据库没有限制

GROUP BY without limit on a large DB

我有 2 个表用于记录流量统计信息。第一个包含访问者信息,第二个包含访问过的页面。

然后我有这个查询,它应该让我得到一个按访问次数排序的浏览器列表。

SELECT tu.browser, COUNT(tp.id) AS count FROM t_users tu 
   LEFT JOIN t_pages tp ON tu.id = tp.id GROUP BY tu.browser

我想知道如果这些表中有数百万条记录,这个查询是否仍然有效。

请注意,我在查询中使用的所有列上都有索引。

要了解此查询是否对您的硬件上的数据运行得很快,您必须自己进行测量。

无论如何,这个查询已经很高效了。 可以使用 t_pages.id 上的索引完成连接,并且 GROUP BY 通过按顺序扫描 t_users.browser 上的索引条目非常有效。 然而,如果 t_users.id 不是 rowid,即,如果它没有声明为 INTEGER PRIMARY KEY,那么从索引条目中查找它需要转到实际的 table;您可以通过添加包含 browserid 字段的 covering index 来删除此步骤。