1
我正在阅读mysql manual,为什么使用“或”的示例查询不使用索引?
以下是手册中的示例。
示例创建Multiple-Column Indexes
,索引是(last_name,first_name)
CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,
first_name CHAR(30) NOT NULL,
PRIMARY KEY (id),
INDEX name (last_name,first_name)
);
手动说,这种查询将使用索引
SELECT * FROM test
WHERE last_name='Widenius' AND first_name='Michael';
但低于or
查询将不使用索引:
SELECT * FROM test
WHERE last_name='Widenius' OR first_name='Michael';
问题
为什么例子查询与or
,即为什么
SELECT * FROM test
WHERE last_name='Widenius' OR first_name='Michael';
不使用索引?
你可以通过显示执行计划来证明这一点吗? – Jan
但是,名称索引不用于以下查询中的查找:SELECT * FROM test WHERE last_name ='Widenius'OR first_name ='Michael'; –
@Jan手册说 –