Avatar billede eksperten1 Nybegynder
13. januar 2003 - 18:38 Der er 6 kommentarer

Optimer stor DB > 500.000 records

Jeg har en (syntes jeg selv) stor DB med en masse firmaoplysninger. Mit problem er at den er rasende langsom når jeg søger i den.

Dataene er fra Købmandstanden og der er ca 575.000 firmaer i og ca 2000 forskellige brancher.

Hvis jeg eksempelvis søger efter en bestemt branche, søger jeg efter en kode i felterne kode1 - kode9
"SELECT navn, telefon FROM kobdata2 WHERE (kode1 = 441122 OR kode2 = 441122 o.s.v.)"
Den søgning tager 5-6 sekunder, det er en P4@1.8GHz, 512 MB RAM, Windows XP (ender dog på en 2000 Server)

Det er jo død langsomt, det går også galt når man laver en fritekst søgning på navnet "WHERE navn LIKE '%malermester john%'... så er vi oppe på 4-6 sekunder. Big time for lang tid.

Hvad skal jeg gøre for at optimere tabellen til disse søgninger. Især den første efter kode1... skal være hurtigere idet denne søgning foretages ofte.

Tabellen ser sådan her ud:
CREATE TABLE kobdata2 (
  ID int(10) unsigned NOT NULL auto_increment,
  navn varchar(255) default NULL,
  sammensatnavn varchar(255) default NULL,
  conavn varchar(255) default NULL,
  adresse varchar(255) default NULL,
  tom1 varchar(255) default NULL,
  postnr smallint(255) default NULL,
  bynavn varchar(255) default NULL,
  telefon varchar(255) default NULL,
  telefax varchar(255) default NULL,
  web varchar(255) default NULL,
  email varchar(255) default NULL,
  kode1 mediumint(255) default NULL,
  kode2 mediumint(255) default NULL,
  kode3 mediumint(255) default NULL,
  kode4 mediumint(255) default NULL,
  kode5 mediumint(255) default NULL,
  kode6 mediumint(255) default NULL,
  kode7 mediumint(255) default NULL,
  kode8 mediumint(255) default NULL,
  kode9 mediumint(255) default NULL,
  kat1 varchar(255) default NULL,
  kat2 varchar(255) default NULL,
  kat3 varchar(255) default NULL,
  kat4 varchar(255) default NULL,
  kat5 varchar(255) default NULL,
  kat6 varchar(255) default NULL,
  kat7 varchar(255) default NULL,
  kat8 varchar(255) default NULL,
  kat9 varchar(255) default NULL,
  keywords text,
  PRIMARY KEY  (ID)
) TYPE=MyISAM;

mvh
Mark
Avatar billede Slettet bruger
13. januar 2003 - 18:42 #1
Du har jo ingen indexes på de ting, du søger på. Så skal det gå langsomt, idet mySQL skal søge kronologisk gennem alle dine rækker!

Læs om indexes på: http://www.mysql.com/doc/en/MySQL_indexes.html

Læs envidere om EXPLAIN syntax'en, så du kan se, hvilke indexes der anvendes:
http://www.mysql.com/doc/en/EXPLAIN.html
Avatar billede jesperhaun Nybegynder
15. januar 2003 - 22:42 #2
mercur8 har ret omkring indeks. Det vil afhjælpe dit første problem. Det andet problem omkring LIKE bør du løse ved at fulltext-indeksere de felter, som du vil fritekst søge i - fx Navn. Hvis du kan, så brug MySQL 4 og ikke 3, da fulltext er noget bedre i den nyeste version. Så går det meget hurtigt at finde "malermester john".
Avatar billede eksperten1 Nybegynder
15. januar 2003 - 23:02 #3
>jesperhaun Jeg har kigget på MySQL 4, men så vidt jeg kan se så er den ikke stable endnu men stadig en beta (gamma) udgave ?
Avatar billede jesperhaun Nybegynder
17. januar 2003 - 10:46 #4
Det kan man diskutere. Eksperten og www.newsscanner.dk kører MySQL 4.
Avatar billede eksperten1 Nybegynder
17. januar 2003 - 11:00 #5
Hvis man skal lave en MySQL server installation, får jeg så mest spark for pengene på Win2000 Server eller på en BSD ?
Avatar billede jesperhaun Nybegynder
17. januar 2003 - 11:06 #6
Skal du følge anvisninger fra MySQL (altså firmaet), så bør du vælge Linux eller lignende som BSD. Newsscanner kører på Windows, og det fungerer godt, men lige med den database, ville jeg nok stole mere på en Unix-type.
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