phpbar.de logo

Mailinglisten-Archive

Mal wieder das Order By Problem: filesort statt index

Mal wieder das Order By Problem: filesort statt index

Jan Varwig janvarwig@gmx.net
Thu Nov 28 11:00:50 2002


Hallo mysql-de,

Schiere Verzweiflung treibt mich hierher. Zu dem Problem lies sich
auch nirgends sonst vernünftige Antwort finden, obwohl ich nicht der
einzige mit dem Problem zu sein scheine:

Folgende Tabelle:

CREATE TABLE `news` (
  `nid` bigint(4) NOT NULL auto_increment,
  `subject` varchar(50) NOT NULL default '',
  `source` tinytext NOT NULL,
  `summary` text NOT NULL,
  `full` longtext NOT NULL,
  `aid` varchar(30) NOT NULL default '',
  `time` datetime NOT NULL default '0000-00-00 00:00:00',
  `gid` varchar(10) NOT NULL default '',
  PRIMARY KEY  (`nid`),
  KEY `news_time` (`time`)
) TYPE=MyISAM

Und folgende Abfrage:

  explain select nid, subject, length(full) as length, unix_timestamp(time) as time
    from news where news.summary like '%zelda%' or news.full like '%zelda%' order by news.time desc

Diese Abfrage, aber auch vereinfachte Varianten davon (alle aber order
by news.time) benutzt einfach nicht den Index 'news_time', sondern
filesort, was ich bei ~5.000 Einträgen natürlich gern verhindern
würde. Ein ähnliches Problem hatte ich in einer anderen Tabelle,
welches sich aber durch ein Update von 3.23 auf 4.0.5-beta erledigt
hatte. Leider war das hier nicht der Fall.
Wie bekomme ich mysql dazu, nach indexen zu sortieren, bzw. woran
liegt es, dass mysql den Index nicht benutzt.

Jan Varwig

-- 
"Wo das Irrenhaus ist?" war wieder Arkanum Jill Watson
zu hören. "Haben sie jemals die Gebrauchsanleitung auf
einem Päckchen Zahnstocher gelesen?" - Douglas Adams
Jan Varwig janvarwig@gmx.net


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive