一个表有五5个字段id(pk) xh(学号,虽然不是pk但也是全表唯一的) xb(性别) bj(班级)
sql1:select * from xh = '123'和sql2:select * from xh = '123' and xb='男' and bj='11'
问sql1和sql2那个更快些其中xh、xb、bj都分别有indexxh、xb、bj联合还有一个index

解决方案 »

  1.   

    由于xh是具有唯一性,很明显,SQL1是首选。
    SQL查询的基本原则之一就是使用最有效的过滤条件,这样可以保证读取更少的数据来完成查询。
    另外,像xb这样的列就没有必要创建索引了,性别一般情况下只有男,女两个值,很显然会有大量的重复数据列。这样的索引是没有任何用处的,MySQL不会使用它,只会占用更多的空间。
    具有大量重复性数据的字段即使频繁出现在Where中也不要创建索引。
      

  2.   

    xh(学号,虽然不是pk但也是全表唯一的)所以一样快。
      

  3.   

    Mysql所有的引擎支持索引加起来四种:
    B-Tree 
    R-Tree 
    Hash索引 
    FullText索引
      

  4.   

    我还是认为select * from xh = '123'快。
    原因和1楼一样。