2009-12-23 2 views
0

인덱스가있는 float 필드가 average_ratingtitles 테이블이 약 14000 개의 레코드로 구성되어 있습니다. 그러나 가장 높은 average_rating의 처음 48 개 레코드를 가져 오려고하면 인덱스가 작동하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?float 필드의 인덱스가 무시 된 것 같습니다.

mysql> explain SELECT * FROM `titles` WHERE (average_rating is not null) \ 
ORDER BY average_rating desc LIMIT 0, 48\G 

*************************** 1. row *************************** 
      id: 1 
    select_type: SIMPLE 
     table: titles 
     type: range 
possible_keys: index_titles_on_average_rating 
      key: index_titles_on_average_rating 
     key_len: 5 
      ref: NULL 
     rows: 14114 
     Extra: Using where 
1 row in set (0.00 sec) 
+0

나는 이해의 주인에게서 멀다, 나는 결코 MySQL을 사용한 적이 없다. 그러나 그것이 인덱스를 사용하고 있다고 말하는 것은 아닙니까? 그렇지 않다면,'key : index_titles_on_average_rating' 란 무엇을 의미합니까? –

+0

@dan : 색인을 사용하지 않는다고 생각하는 이유는 무엇입니까? –

+0

그것은 mysql이 14114 행을 읽는다 고 말합니다. 내가 48 줄을 요구할 때 이것이 옳은가? – dan

답변

0

저는 LIMIT 절을 무시하고 있습니다.

관련 문제