V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  sycxyc  ›  全部回复第 2 页 / 共 2 页
回复总数  23
1  2  
2018-08-27 09:40:09 +08:00
回复了 sycxyc 创建的主题 MySQL mysql 视图 条件语句 疑似 bug
@msg7086 不支持应该会报错,例如下面这种

MariaDB [tmp]> select * from t1_view c where c.id not in (select id from t1 limit 1);
ERROR 1235 (42000): This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

我认为是 mysql 优化器对视图支持存在缺陷, 目前发现新版本可以

set @@optimizer_switch='materialization=off';

关闭后对 not exists 的结果会有所改善
禁用优化的另一种方法是,条件不要"简单直接"

select count(*) from t1_view where 0+id not in (select id from t1_view);
2018-08-26 21:18:14 +08:00
回复了 sycxyc 创建的主题 MySQL mysql 视图 条件语句 疑似 bug
@choury 笛卡尔乘积那来的 null?
执行一下就知道了 select a.id,t2.id from t1 a join t2 order by a.id;
现在我很混乱,你不要乱说啊
2018-08-26 20:41:30 +08:00
回复了 sycxyc 创建的主题 MySQL mysql 视图 条件语句 疑似 bug
@choury 你用手机所以可能不太清楚情况. t1 和 t1_view 数据是是一样的, 但结果应该都是 0. 实际程序比这个复杂很多, 复现条件是视图中至少要使用 join 和 order by, 我是很难再简化了.
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4584 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 09:51 · PVG 17:51 · LAX 01:51 · JFK 04:51
Developed with CodeLauncher
♥ Do have faith in what you're doing.