Avatar billede tipsen Nybegynder
28. april 2004 - 23:57 Der er 7 kommentarer og
2 løsninger

Optimering af mysql query

Hej eksperter

Sidder med en grim query, som *må* kunne optimeres...

Selve query'en er her:

SELECT t1.varname, t1.varvalue, t1.description, t1.mod_id, t1.locked, t2.modulename, t4.tpl_name
FROM config AS t1
LEFT JOIN modules AS t2 ON t1.mod_id = t2.id
LEFT JOIN tpl_mods AS t3 ON t2.id = t3.mod_id
LEFT JOIN tpl_page AS t4 ON t3.tpl_id = t4.id

De 4 tabeller den involverer er her:

#
# Struktur dump for tabellen `config`
#

CREATE TABLE config (
  id smallint(5) unsigned NOT NULL auto_increment,
  varname varchar(50) NOT NULL default '',
  vartype varchar(50) NOT NULL default '',
  varvalue text NOT NULL,
  description varchar(255) NOT NULL default '',
  mod_id smallint(5) unsigned NOT NULL default '0',
  locked tinyint(1) NOT NULL default '0',
  lastmodified timestamp(14) NOT NULL,
  PRIMARY KEY  (id),
  UNIQUE KEY uniquevars (varname,mod_id)
) TYPE=MyISAM COMMENT='Konfigurationsværdier til CMS systemet - brugerdel';
# --------------------------------------------------------

#
# Struktur dump for tabellen `modules`
#

CREATE TABLE modules (
  id smallint(5) unsigned NOT NULL auto_increment,
  modulename varchar(100) NOT NULL default '',
  filename varchar(100) NOT NULL default '',
  classname varchar(100) NOT NULL default '',
  description varchar(255) NOT NULL default '',
  help text NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM COMMENT='PHP moduler der kan tilknyttes til websiderne - brugerdel';
# --------------------------------------------------------

#
# Struktur dump for tabellen `tpl_mods`
#

CREATE TABLE tpl_mods (
  id smallint(5) unsigned NOT NULL auto_increment,
  tpl_id smallint(5) unsigned NOT NULL default '0',
  mod_id smallint(5) unsigned NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM COMMENT='Hvilke moduler skal hentes til hvilke templates?';
# --------------------------------------------------------

#
# Struktur dump for tabellen `tpl_page`
#

CREATE TABLE tpl_page (
  id smallint(5) unsigned NOT NULL auto_increment,
  tpl_name varchar(100) NOT NULL default '',
  tpl_title varchar(255) NOT NULL default '',
  source text NOT NULL,
  secure tinyint(1) NOT NULL default '1',
  trusted tinyint(1) NOT NULL default '1',
  timestamp timestamp(14) NOT NULL,
  active tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM COMMENT='Skabeloner til websider - brugerdel';

Håber I kan hjælpe med nogle gode forslag - også gerne links til lidt læsestof, så jeg selv kan løse problemerne næste gang!
Avatar billede dennismp Nybegynder
29. april 2004 - 00:17 #1
Jeg er ikke den store haj til mysql. Men jeg ville nok smide lidt index på de fremmednøgler du bruger.. (mod_id)..
Avatar billede arne_v Ekspert
29. april 2004 - 06:01 #2
SELECT t1.varname, t1.varvalue, t1.description, t1.mod_id, t1.locked, t2.modulename, t4.tpl_name
FROM ((config AS t1
LEFT JOIN modules AS t2 ON t1.mod_id = t2.id)
LEFT JOIN tpl_mods AS t3 ON t2.id = t3.mod_id)
LEFT JOIN tpl_page AS t4 ON t3.tpl_id = t4.id

og index på alle felter der bruge i ON betingelse, så kan du vist ikke gøre mere
Avatar billede tipsen Nybegynder
29. april 2004 - 15:33 #3
Hej dennis og arne - nu har jeg indekseret i vildskab (moderat vildskab - bare rolig!)

arne: De parenteser du har set - hvilken betydning har de?
Avatar billede arne_v Ekspert
29. april 2004 - 15:39 #4
Jeg kunne ikke huske om de var optional eller ej. Er de det så er
der ingen grund til at have dem.
Avatar billede tipsen Nybegynder
29. april 2004 - 16:12 #5
OK - jeg siger tak - smid et svar begge to.
Avatar billede arne_v Ekspert
29. april 2004 - 16:19 #6
OK

hjalp indexene ?
Avatar billede tipsen Nybegynder
29. april 2004 - 17:12 #7
Der er endnu ikke så mange rækker i tabellerne, men det kommer der og så er jeg sikker på, at de vil gøre en forskel.
Avatar billede arne_v Ekspert
28. maj 2004 - 23:49 #8
dennis>

Hvis du ligger et svar så tipsen kan få afsluttet spørgsmålet ...
Avatar billede dennismp Nybegynder
28. maj 2004 - 23:52 #9
Beklager, jeg har vist overset denne tråd.
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