SQL Query的进一步(速度)改进

时间:2014-03-14 16:14:02

标签: mysql sql performance

我有以下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 

0 个答案:

没有答案