如果我只想从mysql取一条记录,用 select * from abc where id='$id' 快 还是 select * from abc where id='$id' limit 1 快呢??我不想分页,只想知道那个速度快一点,因为我需要经常读取一条记录,各位大侠,帮忙测试一下好吗?

解决方案 »

  1.   

    这两条都会被报告类型错误吧。。在不知道你表字段类型的情况下没法回答你。通常来说 id 作为int型自增量 主键的字段名。应该是整形~ 所以不需要 '' 单引号~ 而你写了。
    如果是字符型的字段。id又重复,那就要用limit 截取一条。如果是唯一值,去多做一个limit 很明显要浪费时间啊
      

  2.   

    如果你的id为索引,是主键的话,两句话得出的结果都只有一行结果,当然就没必要加limit了;如果id不是主键,根据id=$id会查出多条结果,那么就用含有limit的语句,因为第一个查找句会返回多句结果。
      

  3.   

    以上兩位的意見都好,可以幫忙測試一下嗎?加了limit后,是否,一找到結果就停止呢?還是,找到全部結果后,限制輸出一條呢?
    在1万条记录里面,加了limit后,起到快的作用吗?
    $aaa=mysql_fetch_assoc(mysql_query("select * from abc where ok='$a'")) 快还是
    $aaa=mysql_fetch_assoc(mysql_query("select * from abc where ok='$a' limit 1")) 快呢?我只输出一条记录
    echo $aaa['b'];
      

  4.   

      老兄,如果你只输出$aaa['b'],那肯定用 select b from abc where ……;
      
      言归正传,加limit的作用在于输出,mysql执行顺序是一段一段执行,"select * from abc where ok='$a' limit 1")首先运行 select * from abc where ok='$a' ,这段运行完后才运行 limit 1,而且数据量太少的话,根本就没办法测试,建议一个方法,你先写一个循环,写10万条数据进数据库,再分别用这两句话进行查询,查询语句后获得开始时间和结束时间,两个时间之差越短的,效率就越高
      

  5.   

    如果ID是主键或者唯一索引,两个SQL语句执行的效率是一样的,以为MYSQL足够聪明去处理这点事情如果非唯一显然第一个SQL语句要遍历全表第二个SQL语句找到一个就返回结果 ,当然快
      

  6.   

    select * from abc where id='$id' limit 0,1
    ``````````````````````