有没有办法强制MySQL将谓词推送到视图中?
示例:
CREATE TABLE t1(
id INT(11) NOT NULL AUTO_INCREMENT
PRIMARY KEY (id)
);
CREATE VIEW v1
AS SELECT * FROM t1;
下面的查询不会在MySQL中使用PRIMARY KEY索引:
SELECT *
FROM v1
WHERE id = 1
相反,它会从t1中选择所有内容,创建一个派生表,然后将其过滤掉id = 1。
有没有办法克服这个问题?
PS:我的现实生活中的例子比上面的更复杂,但为了简单起见,我使用了上面的例子
PPS:这是一个相关的Stack Overflow问题:How do I get MySQL to use an INDEX for view query?
答案 0 :(得分:0)
是的,但您必须切换到完全兼容的MariaDB 10.2.2
默认情况下处于启用状态,可以使用optimizer_switch
:
SET GLOBAL optimizer_switch='condition_pushdown_for_derived=off'