SELECT * FROM c_info WHERE f_cityid IN ( SELECT f_id FROM c_city WHERE f_parent = 2 AND f_level = 2 ) AND f_status = 1 AND f_new=0 ORDER BY f_date DESC LIMIT 0,10

解决方案 »

  1.   

    SELECT * FROM c_info WHERE f_status = 1 AND f_new=0 and f_cityid IN ( SELECT f_id FROM c_city WHERE f_parent = 2 AND f_level = 2 )  ORDER BY f_date DESC LIMIT 0,10条件换个位置.然后就是加索引了
      

  2.   


    SELECT * FROM c_info a WHERE f_status = 1 AND f_new=0 and exists (SELECT 1 FROM c_city where f_parent = 2 
            AND f_level = 2  and  a.f_cityid = f_id )
            ORDER BY f_date DESC LIMIT 0,10 
      

  3.   

    一楼的 f_cityid IN ( SELECT f_id FROM c_city WHERE f_parent = 2 AND f_level = 2 ) 查出来的记录数回比 f_status = 1 AND f_new=0  少你这样写不执行的效率反而会跟底  根据我时间的测试也是这样的, 2楼的不明白你为什么这样写 能说说理由吗?
      

  4.   

    你要确定哪个效率高的话,就EXPLAIN试验。