like '%$songname%'";
是不会使用到 SongName 上的索引 的

解决方案 »

  1.   

    to:shuixin13(犬犬(心帆)) 
    是的,我刚查资料发现了
    要去掉前面的%,可是这样的搜索结果很不完整,有别的办法吗?
      

  2.   

    already answered u in another board..
    you better try index reverse.
      

  3.   


    如果SongName表的更新频率不是很大,试试在启动MySQL时加上以下选项:set-variable = query_cache_size=10M
    set-variable = key_buffer=10M
      

  4.   

    1.为查询加上limit
    2.使用fulltext索引.用match...against进行查询.
      

  5.   

    不过fulltext对有些字符串好像比较特殊.
    像我测试时查询"localhost",结果花费是一般字符串的500倍.
    我再看去看看帮助先。
      

  6.   

    你这样没法用索引,像‘songname%’这样的可以转化为 'songname' <= SongName <'songnamf'这样就可以使用索引,而你那个以通配符开头的没办法转化。当然永不上索引,只有全表扫描拉!!!!