【发布时间】:2020-07-10 10:36:05
【问题描述】:
我的正常查询:
SELECT
DISTINCT vt.id as id,
vtt.name as n,
vt.etxid as etx
FROM vt
LEFT JOIN vtt ON
(vtt.locale = "etx"
AND vtt.etxid = vt.etxid)
执行时间:5ms
我的看法:
CREATE OR REPLACE VIEW myview AS
SELECT
DISTINCT vt.id as id,
vtt.name as n,
vt.etxid as etx
FROM vt
LEFT JOIN vtt ON
(vtt.locale = "etx"
AND vtt.etxid = vt.etxid)
我的视图查询:
SELECT * from myview;
执行时间:600ms
【问题讨论】:
-
你确定这是可重现的吗?假设相同的基础数据,执行计划和运行时间应该大致相同。基础数据是否发生了变化?
-
只是观察一下,MySQL 中的 VIEW 没有任何用处
-
数据没有变化。
-
@Strawberry 视图确实在 MySQL 中起到了非常有用的作用。如果您使用的是 Django 之类的框架,您可以避免使用原始 sql 查询,否则它们是必要的,而是让您的模型指向具有预组合查询而不是表的视图。这样,您可以继续使用常规查询集 ORM 并将 Django 和 sql 分开。其他框架可能也一样。