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

时间:2016-10-05 10:37:24

标签: database sqlite group-by sql-order-by

我有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

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

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

1 个答案:

答案 0 :(得分:1)

要了解此查询是否与您的硬件上的数据一起快速运行,您必须自己测量它。

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