MySQL谓词推动

时间:2014-08-19 15:11:08

标签: mysql view indexing

有没有办法强制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?

1 个答案:

答案 0 :(得分:0)

是的,但您必须切换到完全兼容的MariaDB 10.2.2

默认情况下处于启用状态,可以使用optimizer_switch

关闭
SET GLOBAL optimizer_switch='condition_pushdown_for_derived=off'