Как создать индекс в части даты поля 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 используется для сохранения даты и времени транзакции, как это происходит
В моей таблице содержится более 1 000 000 записей и утверждение
SELECT * FROM transactionlist where date(TranDateTime) = '2008-08-17'
занимает много времени.
ИЗМЕНИТЬ:
Взгляните на это сообщение в блоге " Почему MySQL DATETIME можно и следует избегать"