SELECT wor_id,Gzxx,Gzsj,daiyu,adddate FROM `ejz_wor` WHERE shenhe=1 and Gzxx like '%暑%' and Adddate between '2010-03-01'and'2010-05-29'SELECT wor_id,Gzxx,Gzsj,daiyu,adddate FROM `ejz_wor` WHERE shenhe=1 and Gzsj like '%暑%' and Adddate between '2010-03-01'and'2010-05-29'MySql 怎么建立合适的索引 ,查询的数据量大! 我试着建立了多列索引 查询反而比没建的索引耗时多 晕了 ,没办法了  数据库方面的专家 看看。

解决方案 »

  1.   

    在shenhe、Gzsj、Gzxx、Adddate建立复合索引试试
      

  2.   

    show index from `ejz_wor` ;explain SELECT wor_id,Gzxx,Gzsj,daiyu,adddate FROM `ejz_wor` WHERE shenhe=1 and Gzxx like '%暑%' and Adddate between '2010-03-01'and'2010-05-29'贴出来看一下。
      

  3.   

    Gzsj或者Gzxx  上的索引毫无意义,不能这么建!你需要的索引是 (shenhe,Adddate)
      

  4.   

    Gzxx, Gzsj 列肯定用不上索引了。
    只建复合索引:(shenhe, Adddate)吧, 并把条件Gzxx like以及Gzsj like移到where的末尾。
      

  5.   

    谢谢各位了 确实比以前快多了~~~快了一倍! LIKE 字段建立索引 是不是没用啊?
      

  6.   

    是,没用。类似这种需要设置全文索引。
    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html