我有一张约有100,000个用户的表。
第一种情况:
explain select state, count(*) as cnt from users where state = 'ca'
当我为上述查询做一个解释计划时,我得到的费用为5200
第二种情况:
Create or replace view vw_users as select state, count(*) as cnt from users Explain select cnt from vw_users where state = 'ca'
当我对第二个查询做一个解释计划时,我得到的费用为100,000。
视图中的where子句如何工作?在视图检索所有行之后是否应用where子句?如何解决此问题?
这是关于已使用的视图算法的。
该 合并 算法行之有效最表的索引和诸如此类的东西-的 不是Temptable 算法不-在很多情况下,你的索引将只是平了都没有用。
还有很多废话不支持合并
如果视图包含以下任何构造,则不能使用MERGE: * Aggregate functions (SUM(), MIN(), MAX(), COUNT(), and so forth) * DISTINCT * GROUP BY * HAVING * LIMIT * UNION or UNION ALL * Subquery in the select list * Refers only to literal values (in this case, there is no underlying table)
如果视图包含以下任何构造,则不能使用MERGE:
* Aggregate functions (SUM(), MIN(), MAX(), COUNT(), and so forth) * DISTINCT * GROUP BY * HAVING * LIMIT * UNION or UNION ALL * Subquery in the select list * Refers only to literal values (in this case, there is no underlying
table)