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手冊說 –