16. marts 2006 - 17:20
Der 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?
16. marts 2006 - 18:14
#2
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
16. marts 2006 - 18:21
#3
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?
16. marts 2006 - 18:56
#4
det tror jeg ikke - bare goere alle dine SQL saetninger med joins laengere
da det saa vidt jeg kan vurdere giver mening at soege paa de felter enkeltvist, saa
vil jeg mene at du skal beholde dem som enkelt index