为了走索引,我把REGEXP换成了OR,那WHERE后面可容多少个OR呢?请问同仁。WHERE (area_id="0_1" OR area_id="0_2" OR area_id="0_3" OR area_id="0_4" OR area_id="0_5" OR area_id="0_6" OR area_id="0_7" OR area_id="0_8" OR area_id="0_9" OR area_id="0_10" OR area_id="0_11" OR area_id="0_12" OR area_id="0_13" OR area_id="0_14" OR area_id="0_15" OR area_id="0_16" OR area_id="0_17" OR area_id="0_18" OR area_id="0_19" OR area_id="0_20" OR area_id="0_21" OR area_id="0_22" OR area_id="0_23" OR area_id="0_24" OR area_id="0_25" OR area_id="0_26_1" OR area_id="0_26_2" OR area_id="0_26_3" OR area_id="0_26_4" OR area_id="0_26_5" OR area_id="0_26_6" OR area_id="0_26_7" OR area_id="0_26_8" OR area_id="0_26_9" OR area_id="0_26_10" OR area_id="0_27" OR area_id="0_28" OR area_id="0_29" OR area_id="0_30_1" OR area_id="0_30_2" OR area_id="0_30_3" OR area_id="0_30_4" OR area_id="0_30_5" OR area_id="0_30_6" OR area_id="0_30_7" OR area_id="0_31_1" OR area_id="0_31_2" OR area_id="0_31_3" OR area_id="0_31_4" OR area_id="0_31_5" OR area_id="0_31_6" OR area_id="0_31_7" OR area_id="0_32" OR area_id="0_33_1" OR area_id="0_33_2" OR area_id="0_34_1" OR area_id="0_34_2" OR area_id="0_34_3" OR area_id="0_34_4" OR area_id="0_34_5" OR area_id="0_34_6" OR area_id="0_35" OR area_id="0_36" OR area_id="0_37" OR area_id="0_38" OR area_id="0_39_1" OR area_id="0_39_2" OR area_id="0_39_3" OR area_id="0_39_4" OR area_id="0_39_5" OR area_id="0_39_6" OR area_id="0_39_7" OR area_id="0_39_8" OR area_id="0_39_9" OR area_id="0_40" OR area_id="0_41" OR area_id="0_42" OR area_id="0_43" OR area_id="0_44" OR area_id="0_45" OR area_id="0_46" OR area_id="0_47" OR area_id="0_48" OR area_id="0_49_1" OR area_id="0_49_2" OR area_id="0_49_3" OR area_id="0_50_1" OR area_id="0_50_2" OR area_id="0_50_3" OR area_id="0_50_4" OR area_id="0_50_5" OR area_id="0_50_6" OR area_id="0_50_7" OR area_id="0_50_8" OR area_id="0_50_9" OR area_id="0_50_10" OR area_id="0_50_11" OR area_id="0_50_12" OR area_id="0_50_13" OR area_id="0_50_14" OR area_id="0_50_15" OR area_id="0_51" OR area_id="0_52" OR area_id="0_53_1" OR area_id="0_53_2" OR area_id="0_54" OR area_id="0_55" OR area_id="0_56" OR area_id="0_57" OR area_id="0_58_1" OR area_id="0_58_2" OR area_id="0_58_3" OR area_id="0_58_4" OR area_id="0_58_5" OR area_id="0_59_1" OR area_id="0_59_2" OR area_id="0_59_3" OR area_id="0_59_4" OR area_id="0_60_1" OR area_id="0_60_2" OR area_id="0_60_3" OR area_id="0_61_1" OR area_id="0_61_2" OR area_id="0_61_3" OR area_id="0_61_4" OR area_id="0_61_5" OR area_id="0_61_6" OR area_id="0_61_7" OR area_id="0_61_8" OR area_id="0_61_9" OR area_id="0_61_10" OR area_id="0_61_11" OR area_id="0_61_12" OR area_id="0_61_13" OR area_id="0_61_14" OR area_id="0_61_15" OR area_id="0_62" OR area_id="0_63" OR area_id="0_64" OR area_id="0_65" OR area_id="0_66" OR area_id="0_67" OR area_id="0_68" OR area_id="0_69" OR area_id="0_70" OR area_id="0_71_1" OR area_id="0_71_2" OR area_id="0_71_3" OR area_id="0_71_4" OR area_id="0_71_5")

解决方案 »

  1.   

    理论上多少个OR没有限制。 但MYSQL中有一次性传的最大SQL语句长度的限制。
    另外,你可以试一下IN where area_id IN ("0_1","0_2" ....
      

  2.   

    建立1个表(lsb),字段ID,在此字段上建立索引,将0_1、0_2等等存入此字段,
    select * from tt a inner join lsb b on a.area_id=b.id
      

  3.   

    明白了。问题是我这些area_id字段是动态的,随着用户对栏目的浏览而随时变化。
      

  4.   

    如果用IN、OR,要考虑SQL语句长度的问题,还是存入表中好一些