Avatar billede kokoko Nybegynder
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?
Avatar billede kokoko Nybegynder
16. marts 2006 - 18:01 #1
Kom lige til at se at der er noget der hedder FOREGIN KEY. Det er måske det jeg skal bruge istedet?
Avatar billede arne_v Ekspert
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
Avatar billede kokoko Nybegynder
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?
Avatar billede arne_v Ekspert
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
Avatar billede arne_v Ekspert
22. april 2006 - 21:56 #5
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester