我有一个大约有 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 子句?我该如何解决这个问题?
这是关于查看算法 http://dev.mysql.com/doc/refman/5.0/en/view-algorithms.html已经被使用了。
The merge算法适用于大多数表索引等 -诱惑的算法不会——在很多情况下,你的索引将完全不被使用。
还有很多 merge 不支持的废话
如果视图无法使用 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)