$mysqli=new My_Db();
$row=$mysqli->user_check("select * from tb_user where name='".$name."' AND PASS='".$pass."'");
if($row)
{echo '登陆成功';}类似这样的条件查询 是否要在neme pass字段加入索引 从而加快登陆认证的速度 赐教!

解决方案 »

  1.   

    对Name字段索引
    select * from tb_user where name='".$name."'"然后比较password和数据库中的password.这样比较好
      

  2.   


    开始我也是这样写的 但后来改成("select * from tb_user where name='".$name."' AND PASS='".$pass."'");这个样子了
    主要是觉得既然查询了name 那就连pass一块查询得了 如果返回字段再比较pass 是否效率会下降?
      

  3.   

    这个效率还真没比较过不过我建表,也只对name 唯一索引或index数据库经验不多,优化心思主要也没放到这个地方
      

  4.   

    网上找到这样一段:例子如下:如果在fields1和fields2上同时建立了索引,fields1为主索引以下sql会用到索引
    select * from tablename1 where fields1='value1' and fields2='value2'以下sql不会用到索引
    select * from tablename1 where fields1='value1' or fields2='value2'按这位朋友说的多字段建立索引似乎也没有不妥 纠结啊·
      

  5.   

    你要去看看索引的基本定义,以及它适用的情况。字段值的相似度越大,索引效果越好
    对多字段建立索引只会降低字段值的相似度,因此索引效果会降低
    一般最多对两个字段索引,如果索引多了没有任何意义。显然,一个字段的索引效果比两个字段的效果好,所以在查询的时候只拿name做条件,不要因为图方便就将password也一起作为查询条件。
      

  6.   


    我感觉你说的有道理 我还是改回来算啦 百度告诉我mysql只能对最左边的索引列进行有效查询 看来多字段建立索引理论行得通 实际应用似乎还不是那么回事