表字段stu为enum('1','0','-1','-2')并对其建立了索引,要查找所有非stu字段为非0的信息,以下几种方法哪一种比较的快的
1.  where stu!='0'
2.  where stu='1' or stu='-1' or stu='-2'
3.  where stu IN('1','-1','-2')

解决方案 »

  1.   

    你首先要确定你的stu字段为什么类型
    如果是varchar类型的,3种情况都用不上索引的如果是int类型的话,则后面2种情况都可以利用上索引当然利用上索引的比没利用上索引的要快啦
      

  2.   

    stu为enum类型的如果是varchar类型的,3种情况都用不上索引的?不是太懂这个意思的,如果varchar类型的字段长度小的话,如为100的话,这时应该可以用的上索引的吧
      

  3.   

    敲快了“你首先要确定你的stu字段为什么类型 ”
    你首先要确定你的stu字段的内容值为什么类型,如('1','0','-1','-2')还是(1,0,-1,-2)
      

  4.   

    其实你可以建立2个表,插入不同的数据,然后用explain跟踪查询语句就会发现的了
      

  5.   

    表字段stu为enum('1','0','-1','-2')
      

  6.   

    如果里面的值像你说的'1','0','-1','-2'这种字符串形式的话,我跟踪了下,都用不上索引的
    若是1,0,-1,-2则后面2种写法可以用上索引
    你自己用explain跟踪下看看吧
      

  7.   

    enum好像没有办法写成1,0,-1这类的样子的
      

  8.   

    enum好像没有办法写成1,0,-1这类的样子的好像是这样的