Mailinglisten-Archive |
Hallo Jan, ich vermute 2 Punkte, die MySQL von der Verwendung des Indexes abhalten: - "or" in where kann der Optimizer nicht so gut verarbeiten wie "and" (MySQL ist IMHO noch nicht so weit) - Suche mit "%xxxx%" kann auch schwer optimiert werden. Besser kann "xxxx%" indexiert werden. cu -wim fleischhauer- -----Original Message----- From: Jan Varwig [mailto:janvarwig@gmx.net] Sent: Thu 28.11.2002 12:00 To: mysql-de@lists.4t2.com Cc: Subject: Mal wieder das Order By Problem: filesort statt index 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 -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive