Comment créer un index sur la partie date du champ DATETIME ?
mysql> SHOW COLUMNS FROM transactionlist;
+-------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------+----------------+
| TransactionNumber | int(10) unsigned | NO | PRI | NULL | auto_increment |
| WagerId | int(11) | YES | MUL | 0 | |
| TranNum | int(11) | YES | MUL | 0 | |
| TranDateTime | datetime | NO | | NULL | |
| Amount | double | YES | | 0 | |
| Action | smallint(6) | YES | | 0 | |
| Uid | int(11) | YES | | 1 | |
| AuthId | int(11) | YES | | 1 | |
+-------------------+------------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)
TranDateTime est utilisé pour enregistrer la date et l'heure d'une transaction au moment où elle se produit.
Ma table contient plus de 1 000 000 d'enregistrements et l'instruction
SELECT * FROM transactionlist where date(TranDateTime) = '2008-08-17'
prend beaucoup de temps.
EDIT :
Jetez un coup d'œil à cet article de blog sur " Pourquoi le DATETIME de MySQL peut et doit être évité "
7 votes
Commentaire d'avertissement pour le lien que vous avez suggéré un regard : Le post est écrit avec une telle excitation et une telle rage qu'il frise presque l'infantilisme. Et l'auteur ne répond à aucune critique, tout en mentionnant qu'il soutient ce qu'il a dit, mais son point de vue s'amenuise à chaque fois. Mais quand même, ce n'est pas une perte de temps, si vous lisez les commentaires.