Mailinglisten-Archive |
Ulrich Kretschmer wrote: > Hallo, > ...und wenn Du einen Index anlegt über _alle_ Felder, die Dein select > angreift? sprich: alter table mytable add index mybigkey (ort, artikel, > tinfo2, km, status); ein index über alle felder nimmt er dann zwar aber das macht das query nicht schneller, braucht immer noch 0,16 sec. ein umsortieren des WHERE bringt mich auch maximal auf 0,11 sec. runter ein reines SELECT COUNT(*) FROM `artikel` GROUP BY `ort` benötigt 0,0009 sec. sobald aber eine WHERE hinzukommt SELECT COUNT(*) FROM `artikel` WHERE `tinfo2` = '1' GROUP BY `ort` auf eines der drei felder benötigt es mindesten 0,11 sec, mit verwendetem index (ort,tinfo2) und das obwohl alle drei felder eine Kardinaltät von 1 haben, kann sie aber auch nicht weg lassen da sich das später noch ändern könnte die tabelle is optimiert, repariert und sortiert > > Ulrich > >>Hi, >> >>irgendwie habe ich das gefühl das mein select irgendwo ünnötigerweiße >>extrem langsam ist: >> >> SELECT `ort`, >> COUNT(`ort`) >> FROM `artikel` >> WHERE `tinfo2` = 1 >> AND `km` = 'k' >> AND `status` = '1' >> GROUP BY `ort` >> >>es benötigt 0.16 sekunden oder länger >> >>es will einfach keinen index verwenden: >> >>habe folgende indizes probiert: >> >>(id) >>(titel) >>(tinfo2) >>(km) >>(status) >>(tinfo2,km,status) >>(ort) >> >>es sind 3.500 datensätze in der db >>das ergebnis liefert ca. 600 CREATE TABLE `artikel` ( `id` int(11) NOT NULL auto_increment, `km` enum('k','m') NOT NULL default 'k', `tinfo1` int(11) default NULL, `tinfo2` int(11) default NULL, `tinfo3` int(11) default NULL, `tinfo4` int(11) default NULL, `titel` varchar(100) default NULL, `titelintern` varchar(100) default NULL, `status` varchar(10) NOT NULL default '1', `kaufpreis` decimal(8,2) default NULL, `waehrung` varchar(4) NOT NULL default 'EUR', `zusatzkosten` decimal(8,2) default NULL, `mietpreis` decimal(8,2) default NULL, `mietnk` double(8,2) default NULL, `jahr` int(11) default NULL, `strasse` varchar(50) default NULL, `plz` varchar(8) default NULL, `ort` varchar(50) default NULL, `kontaktadresse` int(11) default NULL, `chinfo1` varchar(100) default NULL, `chinfo2` varchar(100) default NULL, `chinfo3` varchar(100) default NULL, `chinfo4` varchar(100) default NULL, `beschreibung1` text, `beschreibung2` text, `beschreibung3` text, `intinfo1` int(11) default NULL, `intinfo2` int(11) default NULL, `intinfo3` int(11) default NULL, `intinfo4` int(11) default NULL, `decinfo1` decimal(8,2) default NULL, `decinfo2` decimal(8,2) default NULL, `decinfo3` decimal(8,2) default NULL, `bild1` varchar(50) default NULL, `bild1text` text, `bild2` varchar(50) default NULL, `bild2text` text, `bild3` varchar(50) default NULL, `bild3text` text, `bild4` varchar(50) default NULL, `bild4text` text, `bild5` varchar(50) default NULL, `bild5text` text, `angesehen` int(11) default '0', `angefragt` int(11) default '0', PRIMARY KEY (`id`), KEY `titel` (`titel`), KEY `km` (`km`), KEY `status` (`status`), KEY `ort` (`ort`), KEY `tinfo2` (`tinfo2`), KEY `ort_tinfo2` (`ort`,`tinfo2`) ) TYPE=MyISAM AUTO_INCREMENT=2562 ; -- Sebastian Mendel www.sebastianmendel.de www.tekkno4u.de www.nofetish.com -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive