私は500万行のテーブルを持っています。注文したMySQLインデックス
CREATE TABLE `my_table` (
`Id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`Title` CHAR(200) NULL DEFAULT NULL,
`ProjectId` INT(10) UNSIGNED NOT NULL,
`RoleId` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`Id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;
以下のSQLを実行すると、1分以上かかる場合があります。
SELECT *
FROM `my_table` t
WHERE
t.ProjectId IN (123, 456, 789) AND
t.RoleId IN (111, 222, 333)
ORDER BY Title DESC
LIMIT 25
問題は、テーブルのインデックスを適切に追加することです。何か解決策を教えていただけますか?
Explain for index "ProjectId" and "RoleId" is:
key = IndxProjectIdRoleId
ref = NULL,
rows: 32,463
Extra: Using where; Using filesort
ありがとうございます。
はい、「IndxProjectIdRoleId」というコンポジットインデックス – sanj
を使用していますが、インデックス付きの列にnull値がありますか、またはnull値に設定されていますか? – scaisEdge
私は少し答えを更新しました。 – scaisEdge