关于mysql索引的创建

假定现有一张表
包括c1,c2,c3,c4,c5这5列(或者更多),
列类型是int或char中的一种,就是说列类型只包含这两种,不涉及2进制等其他列类型,
已知对该表的查询需求是这5列都有可能涉及到,
即where条件是这5列的排列组合,且为and关联,
但是可以确定这5列在where中的顺序为c1,c2,c3,c4,c5
即如果c1列作为查询条件使用的话,必定排在c2,c3,c4,c5之前
如果c2列作为查询条件使用的话,必定排在c3,c4,c5之前
例如,where条件可能为:
where c1 = ? and c2 = ? and c4 = ? and c5 = ?;
或where c3 = ? and c4 = ? and c5 = ?;
或where c1 = ? and c4 = ?;
或where c2 = ? and c3 = ? and c5 = ?;
等等

我想问的是
对于这样的查询需求
建立索引的话,应该是单独对每列建立单列索引,总共建立5个单列索引,对程序整体的效率提高较大,
还是按照一定的规则建立若干个多列索引,对程序整体的效率提高较大(如果是这样,该怎么建)?

作者: zilaishuichina   发布时间: 2011-05-16

我有点晕,不过顶哥一下

作者: wclxyn   发布时间: 2011-05-16

SQL code
where c1 = ? and c2 = ? and            c4 = ? and c5 = ?;
where                       c3 = ? and c4 = ? and c5 = ?;
where c1 = ? and                       c4 = ?;
where            c2 = ? and c3 = ? and            c5 = ?;


并无特殊的排列,只能根据需要创建多个索引,另外还要分析你的各个字段中值的分布。 请描述一下你各字段中值的分布情况。

作者: ACMAIN_CHM   发布时间: 2011-05-16