我有以下SQL查询:
SELECT Frage_ID
FROM Session_Fragen
WHERE
(
Userantwort1 = 0
AND Userantwort2 = 0
AND Userantwort3 = 0
AND Userantwort4 = 0
AND Userantwort5 = 0
) AND Session_ID = 17898
ORDER BY Sessionfrage_ID ASC LIMIT 1;
最初这个查询运行速度非常慢
所以我添加了索引来提高速度
Bevor使用索引我扫描了大约。 500.000行......
使用索引后,我将行减少到大约。 550(取决于结果)
但查询仍然需要> 2秒跑。
有人看到进一步的改进吗?
解释声明:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE Session_Fragen index Session_Fragen_big_index_2,Session_Fragen_big_inde... PRIMARY 8 NULL 535 Using where
显示指数:
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
Session_Fragen 0 PRIMARY 1 Sessionfrage_ID A 573447 NULL NULL BTREE
Session_Fragen 1 Frage_ID 1 Frage_ID A 3018 NULL NULL BTREE
Session_Fragen 1 Session_Fragen_big_index_2 1 Userantwort1 A 2 NULL NULL BTREE
Session_Fragen 1 Session_Fragen_big_index_2 2 Userantwort2 A 3 NULL NULL BTREE
Session_Fragen 1 Session_Fragen_big_index_2 3 Userantwort3 A 5 NULL NULL BTREE
Session_Fragen 1 Session_Fragen_big_index_2 4 Userantwort4 A 7 NULL NULL BTREE
Session_Fragen 1 Session_Fragen_big_index_2 5 Userantwort5 A 9 NULL NULL BTREE
Session_Fragen 1 Session_Fragen_big_index 1 Session_ID A 14703 NULL NULL BTREE
Session_Fragen 1 Session_Fragen_big_index 2 Frage_ID A 573447 NULL NULL BTREE
Session_Fragen 1 Session_Fragen_big_index 3 Sessionfrage_ID A 573447 NULL NULL BTREE
表格结构:
Table Create Table
Session_Fragen CREATE TABLE `Session_Fragen` (
`Sessionfrage_ID` bigint(20) NOT NULL AUTO_INCREMENT,
`User_ID` int(11) NOT NULL,
`SF_Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`Session_ID` int(11) NOT NULL,
`Frage_ID` int(11) NOT NULL,
`Userantwort1` tinyint(1) NOT NULL DEFAULT '0',
`Userantwort2` tinyint(1) NOT NULL DEFAULT '0',
`Userantwort3` tinyint(1) NOT NULL DEFAULT '0',
`Userantwort4` tinyint(1) NOT NULL DEFAULT '0',
`Userantwort5` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`Sessionfrage_ID`),
KEY `Frage_ID` (`Frage_ID`),
KEY `Session_Fragen_big_index_2` (`Userantwort1`,`Userantwort2`,`Userantwort3`,`Userantwort4`,`Userantwort5`),
KEY `Session_Fragen_big_index` (`Session_ID`,`Frage_ID`,`Sessionfrage_ID`)
) ENGINE=MyISAM AUTO_INCREMENT=767877 DEFAULT CHARSET=utf8