表定义,注意UNIQUE
索引:
CREATE TABLE meta
(
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
type SET('tag', 'keyword') NOT NULL,
name VARCHAR(255) NOT NULL,
user_id INT UNSIGNED NOT NULL,
UNIQUE (name, type, user_id),
FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE
);
因此,MySQL 应该在搜索中使用索引,例如WHERE name = 'tag' and type = 'cat'
以及 only (leftmost prefixing) WHERE type = 'tag'
。
我做了:
EXPLAIN SELECT * FROM meta WHERE type = 'tag'
结果是(第五列是possible_keys
):
'1', 'SIMPLE', 'meta', 'ALL', NULL, NULL, NULL, NULL, '1', 'Using where'
我确定我错过了一些东西,但找不到什么。有什么线索吗?