我的数据库 表 table  才 26万记录用 select * from table where state='Y' limit 0,10 //(state enum('Y','N'))速度很快但是 如果 select * from table where state='Y' order by ID desc limit 0,10 (ID 主键)速度就很慢我已经加了 state,ID 的索引了怎么才能快一点

解决方案 »

  1.   

    索引应该如何建立??????????
    我就单独建立一个 state的索引
      

  2.   

    我知道这样建立 
    ield            Type                   Collation          Null    Key     Default  Extra           Privileges            Comment
    ---------------  ---------------------  -----------------  ------  ------  -------  --------------  --------------------  -------
    ID               int(10)                (NULL)             NO      PRI     (NULL)   auto_increment           
    BookID         int(10)                (NULL)             YES     MUL     (NULL)                           
    BookChapterID  int(10)                (NULL)             YES     MUL     (NULL)                         
    Title          varchar(200)           gb2312_chinese_ci  YES             (NULL)                           
    Content        text                   gb2312_chinese_ci  YES             (NULL)                           
    InsertTime     datetime               (NULL)             YES             (NULL)                       
    Url            varchar(200)           gb2312_chinese_ci  YES             (NULL)                        
    State          enum('N','Y','E','I')  gb2312_chinese_ci  YES     MUL     N                              /*Index Information For - tb_bookcontent*/
    --------------------------------------------------Table           Non_unique  Key_name         Seq_in_index  Column_name      Collation  Cardinality  Sub_part  Packed  Null    Index_type  Comment
    --------------  ----------  ---------------  ------------  ---------------  ---------  -----------  --------  ------  ------  ----------  -------
    tb_bookcontent           0  PRIMARY                     1  ID               A               281668    (NULL)  (NULL)          BTREE              
    tb_bookcontent           1  F_BookID                    1  BookID         A                 3095    (NULL)  (NULL)  YES     BTREE              
    tb_bookcontent           1  F_BookID                    2  BookChapterID  A                14824    (NULL)  (NULL)  YES     BTREE              
    tb_bookcontent           1  F_BookChapterID             1  BookChapterID  A                14824    (NULL)  (NULL)  YES     BTREE              
    tb_bookcontent           1  F_State                     1  State          A                    3    (NULL)  (NULL)  YES     BTREE     
    这个是我的表极主键的         
      

  3.   

    很慢是正常的。
    STATE字段
    Cardinality  
    值才是3 。
      

  4.   

    但是我去掉 order by ID 就快很多
      

  5.   

    建一个 id + State 的 index
    == 思想重于技巧 ==
      

  6.   


    排序是一个FULL TABLE SCAN 过程。肯定不会快!