Jag tror att det finns några problem med frågan och själva tabelldefinitionen.
Table.name
är en 4K-kolumn- Frågan sorteras efter den kolumnen
Du sorterar baserat på en kolumn där du lagrar strängar. För att sortera efter strängar måste strängjämförelser utföras. Strängjämförelse tenderar att vara en långsam operation och med tanke på storleken på kolumnen du använder är det mycket troligt att det orsakar en märkbar prestandaträff.
Vi har ingen indikation på innehållet i ditt name
kolumn och det verkar svårt att komma på ett verkligt namn som skulle kräva det många tecken.
Om den här strängen har flera databitar som skiljer sig begreppsmässigt, kanske kolumnen bör delas upp i flera separata kolumner, om möjligt, och sedan normaliseras efter behov.
Om du kan dela upp innehållet i den kolumnen i flera mindre och sedan använda dem, skulle strängjämförelserna, även om de fortfarande är dyra, bli "snabbare" helt enkelt för att strängarna som jämförs kommer att vara betydligt kortare än vad de är nu.
En annan sak att tänka på är om du kan optimera sökningen genom att undvika strängjämförelser helt och hållet eller genom att undvika frågor som kommer att orsaka en fullständig tabellsökning trots att du har definierat index.
För det bör du titta på att använda explain
med din fråga, så att du kan få en bättre förståelse av Frågeexekveringsplan
Citerar dokumenten (min betoning):
Redigera 1
Du har förtydligat att ditt name
kolumnen är faktiskt för användaranteckningar. I det här fallet tycker jag att du bör överväga följande (detta utöver). till det som redan har nämnts):
- Byt namn på kolumnen till något som överensstämmer med dess faktiska innehåll
- Ta bort indexet från kolumnen
- Gör inte använd den kolumnen för att söka, sortera eller någon annan operation än att bara välja den för att visa den (det skulle vara mycket sällsynt om det behövde användas till något annat, IMHO.)
- Du kan eventuellt överväga att ändra kolumnen till en
text
typ och du behöver inte oroa dig så mycket för användarnas uppsatser trunkeras utan förvarning (såvida inte det grafiska användargränssnittet har tillämpat samma inmatningslängd för användaren)