Optimering af forespørgsel
Jeg har følgende 3 tabeller:CREATE TABLE modules (
id int(10) unsigned NOT NULL auto_increment,
filename varchar(50) NOT NULL default '',
description varchar(255) NOT NULL default '',
help text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
CREATE TABLE templates_pages (
id int(11) unsigned NOT NULL auto_increment,
name varchar(200) NOT NULL default '',
pagetitle varchar(255) NOT NULL default '',
source mediumtext NOT NULL,
secure tinyint(1) NOT NULL default '1',
trusted tinyint(1) NOT NULL default '1',
timestamp timestamp(14) NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
CREATE TABLE template_modules (
id int(10) unsigned NOT NULL auto_increment,
tpl_id int(10) unsigned NOT NULL default '0',
mod_id int(10) unsigned NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;
hvor template_modules.tpl_id refererer til templates_pages.id og template_modules.mod_id refererer til modules.id - dét er hvad der linker tabellerne sammen. Mit input er så en værdi fra templates_pages.name og jeg skal så finde filnavne på de moduler der hører til denne template. Jeg har fundet ud af at gøre det vha. nedenstående query, men jeg har også på fornemmelsen, at den er håbløst inefficient, så hvis den kan forbedres vil jeg meget gerne høre det - helst med en tilhørende forklaring af hvorfor en ændring også er en forbedring ;-)
SELECT filename
FROM modules, template_modules, templates_pages
WHERE templates_pages.name = 'kontakt' AND templates_pages.id = template_modules.tpl_id AND template_modules.mod_id = modules.id
På forhånd tak!
Mvh
Tommy
