手册上也没明确说明但我就是无法建立1个以上的索引。是版本问题还是本身就不允许?

解决方案 »

  1.   

    可以啊,你是如何建的?建议你可以先测试一下如下语句。mysql> CREATE TABLE t1 (
        ->    a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        ->    f int,
        ->    message CHAR(20),
        ->    index (f)) ENGINE=MyISAM;
    Query OK, 0 rows affected (0.02 sec)mysql> CREATE TABLE t2 (
        ->    a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        ->    f int,
        ->    message CHAR(20),
        ->    index (f)) ENGINE=MyISAM;
    Query OK, 0 rows affected (0.05 sec)mysql> CREATE TABLE total (
        ->    a INT NOT NULL AUTO_INCREMENT,
        ->    f int,
        ->    message CHAR(20), INDEX(a),index(f))
        ->    ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
    Query OK, 0 rows affected (0.06 sec)mysql> select * from t1;
    +---+------+---------+
    | a | f    | message |
    +---+------+---------+
    | 1 |    1 | Testing |
    | 2 |    2 | table   |
    | 3 |    3 | t1      |
    +---+------+---------+
    3 rows in set (0.00 sec)mysql> select * from t2;
    +---+------+---------+
    | a | f    | message |
    +---+------+---------+
    | 1 |    1 | Testing |
    | 2 |    2 | table   |
    | 3 |    3 | t2      |
    +---+------+---------+
    3 rows in set (0.00 sec)mysql> select * from total;
    +---+------+---------+
    | a | f    | message |
    +---+------+---------+
    | 1 |    1 | Testing |
    | 2 |    2 | table   |
    | 3 |    3 | t1      |
    | 1 |    1 | Testing |
    | 2 |    2 | table   |
    | 3 |    3 | t2      |
    +---+------+---------+
    6 rows in set (0.00 sec)mysql>
      

  2.   

    因为merge  本身什么都没有,只有一个表定义。
      

  3.   

    测试了一下,MergE表确实无法建立索引
      

  4.   

    呵呵,我是在建立完表后,再CREATE INDEX的
      

  5.   

    OMG终于成了不止是索引结构要完全一致,而且建索引的顺序也要完全一致!!!