Poiché deve caricare l'intera tabella per rispondere alla query e l'ordinamento di 4 elementi è economico, Query Optimizer potrebbe semplicemente evitare di toccare l'indice. Succede ancora con tavoli più grandi?
Nota che una colonna varchar(3000) non può essere un indice di copertura perché MySQL non includerà più dei primi 768 circa byte di un varchar in un indice.
Se vuoi che la query legga solo l'indice, l'indice deve avere tutte le colonne in cui stai SELECT
ing per in esso. Su innodb, dovrebbe iniziare a funzionare per la tua tabella a due colonne una volta che hai reso textcol abbastanza piccolo; su MyISAM dovrai includere tu stesso la colonna della chiave primaria, come CREATE INDEX textcolindex ON test (textcol,id);