テーブル定義、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'
(左端のプレフィックス) と同様に検索しますWHERE type = 'tag'
。
やった:
EXPLAIN SELECT * FROM meta WHERE type = 'tag'
結果は次のとおりです (5 列目はpossible_keys
):
'1', 'SIMPLE', 'meta', 'ALL', NULL, NULL, NULL, NULL, '1', 'Using where'
私は何かが欠けていると確信していますが、何が見つかりません。どんな手掛かり?