Problem using_filesort

Schumiel

Erfahrenes Mitglied
Hallo,

ich habe folgende Abfrage und habe hier falsch Indexiert, nur ich weiß nicht, wo?

Code:
SELECT zahl+bonus AS zahlt,id,rang FROM tabelle WHERE runde = '90' AND tab LIKE '%tab%' ORDER BY zahlt DESC,zeit,id

Was genau muss ich denn hier indexieren? :(
 
Oracle? MS SQL? MS Access? MySQL? DB2?

Zu deinem Thema. Wie weisst du denn anhand eines SQLs ob du den Index falsch gesetzt hast?
Auf welche Felder gehen denn deine Indexe?
Was willst du mit den Indexen erreichen?
Hast du den Explain-Plan studiert?
 
Sorry, da fehlen noch einige Angaben.

Ich nutze MySQL.
Ich habe es mittels EXPLAIN herausgefunden, das hier noch ein "using filesort" befindet.

Zur Zeit liegt ein Index auf runde und tab. Habe aber auch die Sortierungen ins Index mit reingesetzt, auch kein Erfolg.

Was will ich damit erreichen?
Das using filesort verschwindet und die Datenbankabfrage schneller ausgeführt wird, als jetzt.
 
Habe aber auch die Sortierungen ins Index mit reingesetzt, auch kein Erfolg.

Was heißt das? Hast du einen einzigen Index, in den du einfach alle diese Spalten rein getan hast?

Das CREATE TABLE Statement würde ich gerne sehen, damit ich mir mir ein Bild davon machen kann (und es eventuell selbst testen kann).
 
PHP:
CREATE TABLE `tab` (
  `id` int(11) NOT NULL default '0',
  `tab` varchar(50) NOT NULL default '',
  `zahl` int(11) NOT NULL default '0',
  `bonus` int(11) NOT NULL,
  `zeit` datetime NOT NULL,
  `runde` int(11) NOT NULL,
  KEY `id` (`id`),
  KEY `runde` (`runde`),
  KEY `tab,runde` (`tab`,`runde`),
  KEY `id,runde` (`id`,`runde`),
  KEY `zeit` (`zeit`),
  KEY `bonus` (`bonus`),
  KEY `zahl` (`zahl`),
  KEY `zahl_2` (`zahl`,`bonus`,`tab`,`runde`,`zeit`,`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
Zurück