EXPLAIN(SELECT ID, Title,Title_en, UserName, ClassCity, Sex, 
IsDisplay,IsDisplay_en, IsHot, IsZL, ClassType, sClassType, nUpDatetime, PayType, PicTable, FashionID, AccessCount 
FROM info_zzlx 
USE INDEX(ClassTypenUpdate) 
WHERE ClassType = 13  
ORDER BY nUpDateTime DESC LIMIT 0, 15)
总的记录数是:47000多条。
现在用这个查询出来是:
select_type    table    type       possible_keys       key             key_len  ref   rows     extra 
SIMPLE     info_zzlx ref ClassTypenUpdate    ClassTypenUpdate 1 const 46075  Using where其实ClassType都基本上差不多。我现在建立了一个ClassType 和nUpDateTime的联合索引。名称为ClassTypenUpdate。但是效果不显示。我想问想。如果我是
SELECT ID, Title,Title_en, UserName, ClassCity, Sex, 
IsDisplay,IsDisplay_en, IsHot, IsZL, ClassType, sClassType, nUpDatetime, PayType, PicTable, FashionID, AccessCount 
FROM info_zzlx 
ORDER BY nUpDateTime DESC LIMIT 0, 15用啥索引好呢?难道Ordery by nUpDateTime应该建立nUpDateTime索引。然后取出侄数15条应该会很快的啊。为啥不行的呢?

解决方案 »

  1.   

    SELECT ID, Title,Title_en, UserName, ClassCity, Sex, 
    IsDisplay,IsDisplay_en, IsHot, IsZL, ClassType, sClassType, nUpDatetime, PayType, PicTable, FashionID, AccessCount 
    FROM info_zzlx 
    ORDER BY nUpDateTime DESC LIMIT 0, 15 --------------------
    这个对于你已建立的“ClassType 和nUpDateTime的联合索引”是用不上的,因为nUpDateTime 不是索引的前缀列。
    如果针对该语句来说,得要建立nUpDateTime的索引或以nUpDateTime为前缀的索引。
      

  2.   


    我单独使用了nUpDateTime索引。但是检索的记录数还是需要47000多。比我现在使用的这个联合索引还要多。
      

  3.   

    那你的意思是检索的记录数要多了。查询会快吗?至少这个ORDERY上会吗?