MySQL : ORDER BY ... Performance Probleme [erledigt]

Alles zum SQL-Dialekt

Moderator: Moderatoren

MySQL : ORDER BY ... Performance Probleme [erledigt]

Beitragvon AUGE_OHR » Mi, 01. Okt 2014 1:16

hi,

sobald ich ORDER BY in ein SELECT aufnehme geht die Performance in die Knie.
das betrifft nicht nur die native Schnittstelle sondern kann in der Workbench reproduziert werden.
MySQL_ORDER.JPG
MySQL_ORDER.JPG (169.6 KiB) 1093-mal betrachtet
man sieht die 18 Sec. :banghead:
ein Index habe ich, jedoch ist es nicht der PRIMARY KEY.
auch wenn ich ORDER BY auf eine andere Column, ohne Index, lege wird es nicht schneller/langsamer ?
Index hab ich in der Workbench angelegt

nur wenn ich den PRIMARY KEY als Order nehme
Code: Alles auswählen
ORDER BY __Record
dauert es > 1 Sec.

was mache ich falsch ?
Zuletzt geändert von AUGE_OHR am Mi, 01. Okt 2014 8:27, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10057
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: MySQL : ORDER BY ... Performance Probleme

Beitragvon AUGE_OHR » Mi, 01. Okt 2014 5:17

nachdem ich raus gefunden habe das es mit dem PRIMARY KEY "schnell" geht dachte ich mir : nimm statt Index dann PRIMARY KEY.
Code: Alles auswählen
ORDER BY NR  // 1st PRIMARY KEY, 1st FIELD
-> "schnell"
Code: Alles auswählen
ORDER BY ONR // 2nd PRIMARY KEY, 2nd FIELD
-> "langsam"
Code: Alles auswählen
ORDER BY NN  // 3rd PRIMARY KEY, 3rd FIELD
-> "langsam"

also das geht auch nicht richtig ... hm

nun alle PRIMARY KEY raus und Index auf das erste FIELD mit UNIQUE -> "schnell"

na dachte ich mir dann jetzt das 2nd Feld und da sagt er es wäre nicht UNIQUE ...
na gut dachte ich aber leider ist das dann auch "langsam"

bei weitern probieren stelle sich raus das nur FIELDs welche UNIQUE waren auch "schnell" sind ... hm

nun wollte ich wenigstens die paar Index versuchen, wobei ich keins als PRIMARY KEY definiert habe !
trotzdem macht er mir beim ersten FIELD Treffer ein PK daraus ... und nur noch "das" ist "schnell" :(

irgendwie läuft was gewaltig schief ... nur wo fange ich an zu suchen ?

p.s. die Versuche hab ich alle in der MySQL Workbench gemacht
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10057
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: MySQL : ORDER BY ... Performance Probleme

Beitragvon Herbert » Mi, 01. Okt 2014 6:40

Hallo Jimmy
Eentuell ist das LIMIT schuld? Könnte einen Scan über die ganze db verursachen.
Versuch es mal mit WHERE....
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1756
Registriert: Mi, 13. Aug 2008 23:22
Wohnort: Gmunden am Traunsee, Österreich

Re: MySQL : ORDER BY ... Performance Probleme

Beitragvon georg » Mi, 01. Okt 2014 6:57

Hallo, Jimmy -


mir steht im Moment keine entsprechend grosse Tabelle zur Verfügung - hast Du mal einen EXPLAIN versucht?

Meine Versuche (Tabelle hat ca. 30.000 Sätze) mit OFFSET, LIMIT liegen alle im Bereich von 0,01 bis 0,66 Sekunden.

Wie sieht Deine my.cnf aus? Welche Werte hast Du dort eingestellt? Auf welchem Speichermedium liegen die Daten (bei mir hier ist es eine SSD). Hast Du mal den Versuch in der Konsole (mysql.exe) nachvollzogen?
Liebe Grüsse aus der Eifel,

Georg
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1748
Registriert: Fr, 08. Feb 2008 21:29

Re: MySQL : ORDER BY ... Performance Probleme

Beitragvon brandelh » Mi, 01. Okt 2014 7:16

Ich habe wirklich keine so großen Tabellen auf meinem MySQL Server (und keine Messwerte zur Hand),
aber ob mit oder ohne Index dürfte ORDER BY für die reine Datensuche keine Rolle spielen,
denn da wir ja zuerst die WHERE Klausel ausgewertet.
Wenn man es bedenkt dürfte erst das interne Resultset von ORDER BY sortiert werden ...

wenn das aber zu "groß" ist könnte der Speicher des SQL Servers ein Problem werden.

Oder übersehe ich da was ?
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13197
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: MySQL : ORDER BY ... Performance Probleme

Beitragvon AUGE_OHR » Mi, 01. Okt 2014 8:27

hi,

so wie es aussieht ist es die Table "amz" selbst ... :angry4:

ich habe nun auch mein PostgreSQL Import Modul auf MySQL umgeschrieben.
nun bin ich diesmal den langsamen Weg gegangen
Code: Alles auswählen
   USE &xdbf via &xrdd EXCLUSIVE
   aStrut := DBSTRUCT()

   IF !(oCon:ExistTables(xtab))
      if  !(oCon:CreateTable( xtab,aStrut))
          msgbox('Error create Table '+xtab)
          return
      endif
   endif
   oTbl := MyResult():New(oCon,,xtab)
   if oTbl:OpenRecord()
      GO TOP
      DO WHILE .NOT. ( EOF() .or.  ::lAbort = .T. )
         oTbl:aBuffer := (xtab)->(SCATTER())
         oTbl:Insert()
         SKIP
      ENDDO
   endif
nachdem ich das DATETIME zum Type "D" in FieldType(nNum) gemacht habe
Code: Alles auswählen
FUNCTION FieldType(nNum)
local cTypeXbase := "U"
   do case
      case nNum == MYSQL_TINY_TYPE
         cTypeXbase := "L"

      case nNum == MYSQL_DATE_TYPE      .OR.;
           nNum == MYSQL_DATETIME_TYPE
         cTypeXbase := "D"
und "meine" DBF Datei genommen seit es mit INDEX und ORDER BY keine Probleme mehr zu geben :blob8:

Ich muss nun mal überprüfen ob das LOAD DATA INFILE, was ja viel schneller geht, da ein Problem macht oder die komische DBF die ich mit
Code: Alles auswählen
cAnsiToUtf8( ConvToAnsiCP(x))
"aufbereitet" habe damit die Umlaute stimmten.

Also Entwarnung ... das konnte einfach nicht sein das MySQL so was im normal Fall macht ! [-X
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10057
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg


Zurück zu SQL (Sprache)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast