16. marts 2006 - 17:20Der er
4 kommentarer og 1 løsning
Optimering af tabel
Jeg har en tabel med lager status:
CREATE TABLE IF NOT EXISTS `articles_stock` ( `id` int(11) UNSIGNED NOT NULL auto_increment, `articleid` int(11) UNSIGNED NOT NULL default '0', `sizeid` int(11) UNSIGNED NOT NULL default '0', `colorid` int(11) UNSIGNED NOT NULL default '0', `count` int(11) UNSIGNED NOT NULL default '0', PRIMARY KEY (`id`), KEY `articleid` (`articleid`), KEY `sizeid` (`sizeid`), KEY `colorid` (`colorid`) )
Jeg bruger ikke id til noget, og oftest laver jeg forespørgler på både articleid, colorid, sizeid for at få fat i et antal varer på lager. Vil jeg med fordel kunne slette id og istedet lave (articleid, colorid, sizeid) til PRIMARY KEY?
Skal jeg så bare fjerne de gamle indeks, da jeg sjældent søger på sizeid og colorid alene?
FOREIGN KEY betyder kun noget med InnoDB tabeller ikke med MyISAM tabeller
hvis du bruger dine felter som beskrevet lyder index rigtigt
teoretisk vil en del mene at du skulle droppe dit id og bruge den 3 felts primary key, men de mere praktisk orienterede vil beholde den id - 3 felts primary keys er bare for besvaerligt at arebjde med i praksis
Jeg vil altså ikke opnå nogen hastighedsforbedring ved at skifte til en 3 felts primær nøgle, men er mine indeks optimale for den forspørgsel jeg nævner eller skal man lave et 3 felts indeks?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.