我的常规查询:
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
答案 0 :(得分:1)
一旦您在视图中提到DISTINCT或聚合函数,MySQL就会为该视图选择TEMPTABLE算法,这意味着它将为该视图创建一个临时表,然后对其进行排序,分组和聚合。查看更多详细信息here。另外,还有一些recommendations here concerning view performance。