1、表 table1 有 主键 id,classid,name. 如果我想用classid 和 name 作为索引。 问题: 因为有了主键索引,classid 和 name 是否还有必要再建立索引,如果不创建是否有效。1、表 table1 有 主键 id,classid. 如果我想用classid 和 name 作为索引。  问题: name 必须不为空吗?

解决方案 »

  1.   

    主键索引id,classid,name,其中id是索引的第一列,如果经常用classid和name做组合查询的话,要用classid和name做组合索引,当然也可以不建,能够利用上主键索引,这取决于id的重复情况,如果
    select count(distinct id) from table1
    这个结果很大,那么应该再建一个classid和name的组合索引,如果结果不大,则不用再建.
      

  2.   

    问题2,name不是主键列,所以可以为空,与建索引没有关系
      

  3.   

    1、表 table1 有 主键 id,classid,name. 如果我想用classid 和 name 作为索引。问题: 因为有了主键索引,classid 和 name 是否还有必要再建立索引,如果不创建是否有效。
    答:如果你的查询条件中肯定包含id,那么肯定是不要再建了,否则就建1、表 table1 有 主键 id,classid. 如果我想用classid 和 name 作为索引。问题: name 必须不为空吗?
    答:可以为空,两个字段都可以为空,只是这样的话,index fast full scan就用不起来了