首页   注册   登录

sycxyc

V2EX 第 242414 号会员,加入于 2017-07-20 11:12:21 +08:00
今日活跃度排名 12337
mysql 视图 条件语句 疑似 bug
MySQL  •  sycxyc  •  109 天前  •  最后回复来自 msg7086
11
sycxyc 最近回复了
109 天前
回复了 sycxyc 创建的主题 MySQL mysql 视图 条件语句 疑似 bug
@msg7086 恩, mariadb 那边已经确认 bug 了
https://jira.mariadb.org/browse/MDEV-17074
110 天前
回复了 sycxyc 创建的主题 MySQL mysql 视图 条件语句 疑似 bug
@blodside 感谢反馈
看来是 MariaDB 分支引入的 bug,
版本 5.6.37 MySQL Community Server (GPL) 也无法复现
110 天前
回复了 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);
110 天前
回复了 sycxyc 创建的主题 MySQL mysql 视图 条件语句 疑似 bug
@choury 笛卡尔乘积那来的 null?
执行一下就知道了 select a.id,t2.id from t1 a join t2 order by a.id;
现在我很混乱,你不要乱说啊
110 天前
回复了 sycxyc 创建的主题 MySQL mysql 视图 条件语句 疑似 bug
@choury 你用手机所以可能不太清楚情况. t1 和 t1_view 数据是是一样的, 但结果应该都是 0. 实际程序比这个复杂很多, 复现条件是视图中至少要使用 join 和 order by, 我是很难再简化了.
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2227 人在线   最高记录 4019   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 9ms · UTC 09:59 · PVG 17:59 · LAX 01:59 · JFK 04:59
♥ Do have faith in what you're doing.
沪ICP备16043287号-1