J'ai une table Cars avec datetime (DATE) et bit (PUBLIC).Utilisation de filesort pour trier par colonne datetime dans MySQL
Maintenant, je voudrais prendre les lignes commandées par DATE et PUBLIC = 1 donc j'utiliser:
select
c.*
from
Cars c
WHERE
c.PUBLIC = 1
ORDER BY
DATE DESC
Mais malheureusement, quand j'utilise expliquer pour voir ce qui se passe j'ai ceci:
1 SIMPLE a ALL IDX_PUBLIC,DATE NULL NULL NULL 103 Using where; Using filesort
Et il prend 0,3 ms pour prendre ces données alors que j'ai seulement 100 lignes. Y at-il un autre moyen de désactiver le fichier?
Si je vais aux index j'ai l'index sur (PUBLIC, DATE) pas unique.
Tableau def:
CREATE TABLE IF NOT EXISTS `Cars` (
`ID` int(11) NOT NULL auto_increment,
`DATE` datetime NOT NULL,
`PUBLIC` binary(1) NOT NULL default '0'
PRIMARY KEY (`ID`),
KEY `IDX_PUBLIC` (`PUBLIC`),
KEY `DATE` (`PUBLIC`,`DATE`)
) ENGINE=MyISAM AUTO_INCREMENT=186 ;
Pourriez-vous s'il vous plaît poster la définition de votre table? Il suffit de lancer 'SHOW CREATE TABLE Cars' – Quassnoi
@Quassnoi - Ok. J'ai ajouté –
300 microsecondes pour 100 lignes? 3 microsecondes par rangée? Cette performance n'est pas pourrie. –