sql >> Database teknologi >  >> RDS >> Mysql

MySQL-valg virker meget langsomt, men kan ikke tænke på, hvordan man kan forbedre det?

Jeg tror, ​​der er nogle problemer med forespørgslen og selve tabeldefinitionen.

  • Table.name er en 4K char-kolonne
  • Forespørgslen sorteres efter den kolonne

Du sorterer baseret på en kolonne, hvor du gemmer strenge. For at sortere efter strenge skal der udføres strengsammenligninger. Strengsammenligning plejer at være en langsom operation, og i betragtning af størrelsen af ​​den kolonne, du bruger, er det meget sandsynligt, at det forårsager et mærkbart præstationshit.

Vi har ikke en indikation af indholdet af dit name kolonne, og det synes svært at tænke på et egentligt navn, der ville kræve det mange tegn.

Hvis denne streng har flere stykker data, der er konceptuelt forskellige, bør kolonnen måske opdeles i flere separate kolonner, hvis det er muligt, og derefter normaliseres efter behov.

Hvis du kan opdele indholdet af den kolonne i flere mindre og derefter bruge dem, ville strengesammenligningerne, selvom de stadig er dyre, være 'hurtigere', simpelthen fordi de strenge, der sammenlignes, vil være væsentligt kortere, end de er nu.

En anden ting at overveje er, om du kan optimere søgningen ved at undgå strengesammenligninger helt eller ved at undgå forespørgsler, der vil forårsage en fuld tabelscanning på trods af, at du har defineret indekser.

Til det bør du se på at bruge explain med din forespørgsel, så du kan få en bedre forståelse af Forespørgselsudførelsesplan

Citerer dokumenterne (min fremhævelse):

Rediger 1

Du har præciseret, at dit name kolonne er faktisk til brugernoter. I dette tilfælde synes jeg, du bør overveje følgende (i udover). til det, der allerede er nævnt):

  1. Omdøb kolonnen til noget, der svarer til dens faktiske indhold
  2. Fjern indekset fra kolonnen
  3. Gør det ikke brug den kolonne til søgning, sortering eller enhver anden handling end blot at vælge den for at vise den (det ville være meget sjældent, hvis det skulle bruges til noget andet, IMHO.)
  4. Overvej eventuelt at ændre kolonnen til en text skriv, og du behøver ikke at bekymre dig så meget om brugernes essays bliver afkortet uden varsel (medmindre GUI'en har håndhævet den samme inputlængdegrænse for brugeren)


  1. PHP singleton database forbindelsesmønster

  2. java.lang.AbstractMethodError:com.mysql.jdbc.Connection.isValid(I)Z

  3. Laravel 5:Overtrædelse af integritetsbegrænsning:1452 Kan ikke tilføje eller opdatere en underordnet række:en fremmednøglebegrænsning mislykkes

  4. Udarbejdet erklæring om Postgresql in Rails