Puisqu'il doit charger toute la table pour répondre à la requête et que le tri de 4 éléments est bon marché, l'optimiseur de requête peut simplement éviter de toucher à l'index. Cela se produit-il toujours avec des tables plus grandes ?
Notez qu'une colonne varchar(3000) ne peut pas être un index de couverture car MySQL n'inclura pas plus que les 768 premiers octets environ d'un varchar dans un index.
Si vous voulez que la requête ne lise que l'index, l'index doit avoir chaque colonne que vous êtes SELECT
ing for in it. Sur innodb, cela devrait commencer à fonctionner pour votre tableau à deux colonnes une fois que vous avez rendu textcol suffisamment petit; sur MyISAM, vous devrez inclure vous-même la colonne de clé primaire, comme CREATE INDEX textcolindex ON test (textcol,id);