【发布时间】:2023-03-19 13:21:01
【问题描述】:
我有 2 张桌子:
-
t_cities(idCity,idCountry,name,population) -
t_countries(idCountry,name)
t_cities 有 50000 行,所以我创建了一个包含英国城市的视图(只有 1100 个):
CREATE VIEW v_city_uk AS SELECT * FROM t_cities WHERE idCountry = 140
到目前为止一切都很好,我得到了一个包含 1100 行的 VIEW。
查询
SELECT COUNT(*) FROM v_city_uk
返回 1100,但解释:
EXPLAIN SELECT COUNT(*) FROM v_city_uk
表示它正在检查 50000 行以执行此查询。为什么?
有没有办法让这不会发生?因为我创建视图是为了加快查询速度而不是相同的。
编辑:我需要一个“聚合表”,感谢 matthewdavidson。
【问题讨论】:
-
你的表有索引吗?我的第一个猜测是视图仍然需要执行 select 和 where 子句,因此它仍然需要确定您要查找的子集。
-
在
(idCountry)上添加索引。