Salut à tous.

J'ai un problème de compréhension au sujets des indexes.

J'ai fait le même test, et je n'obtiens pas le même résultat. Voici le test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DROP TABLE IF EXISTS `test`;
 
CREATE TABLE `test`
(
  `col1`  int unsigned NOT NULL,
  `col2`  int unsigned NOT NULL,
  PRIMARY KEY (`col1`)
) ENGINE=InnoDB
  DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
  ROW_FORMAT=COMPRESSED;
 
create UNIQUE INDEX `idx2` USING BTREE ON `test` (`col2`);
 
SHOW WARNINGS;
 
insert into `test` (`col1`,`col2`) values
(1, 9),(2, 8),(3, 7),(4, 6),(5, 5),(6, 4),(7, 3),(8, 2),(9, 1);
 
select * from test;
Rien de bien compliqué ! Et voici les différences :

Avec 'engine=MyIsam' ou 'engine=Memory', j'obtiens le bon résultat. Ma table est tri selon la 'PRIMARY KEY' (col1).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
+------+------+
| col1 | col2 |
+------+------+
|    1 |    9 |
|    2 |    8 |
|    3 |    7 |
|    4 |    6 |
|    5 |    5 |
|    6 |    4 |
|    7 |    3 |
|    8 |    2 |
|    9 |    1 |
+------+------+
Et avec 'engine=InnoDB', j'obtiens le mauvais résultat. Ma table est tri sur l'indexe (col2).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
+------+------+
| col1 | col2 |
+------+------+
|    9 |    1 |
|    8 |    2 |
|    7 |    3 |
|    6 |    4 |
|    5 |    5 |
|    4 |    6 |
|    3 |    7 |
|    2 |    8 |
|    1 |    9 |
+------+------+
L'ordre du tri n'est pas le même ! Tout ce passe comme si l'indexe 'idx2' dans 'engine=InnoDB' venait influencer l'ordre des lignes.

Qu'est-ce qui vient perturber cet ordre ?
Autrement dit, est-ce que j'ai dans 'my.ini' un mauvais paramétrage sur 'engine=InnoDb' ?

Merci.
@+