我有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
如果这些表中有数百万条记录,我想知道这个查询是否仍然有效。
请注意,我在查询中使用的所有列都有索引。
答案 0 :(得分:1)
要了解此查询是否与您的硬件上的数据一起快速运行,您必须自己测量它。
无论如何,这个查询已经非常有效了。
可以使用t_pages.id
上的索引完成连接,并且通过按顺序扫描t_users.browser
上的索引条目,GROUP BY非常有效。
但是,如果t_users.id
不是rowid
,即如果它未被声明为INTEGER PRIMARY KEY,那么从索引条目中查找它需要转到实际的表;您可以通过添加包含browser
和id
字段的covering index来删除此步骤。