phpbar.de logo

Mailinglisten-Archive

performance -> SQL-Optimierung

performance -> SQL-Optimierung

Wolfgang Steinhauer wolf at earthway.org
Mit Jan 22 10:13:02 CET 2003


Hallo Michael, hallo Listenbewohner,

> Für weitere Diskussionen ist es evtl. sinnvoll, daß Du die (evtl
gekürzten)
> Create-Table/Index statements der Tabellenstrukturen postest.

Sollt ihr haben, hoffe sind nur nicht zu lang:

CREATE TABLE insekt_adress (
  adress_id int(11) NOT NULL auto_increment,
  member_id int(11) NOT NULL default '0',
  region_id int(11) NOT NULL default '0',
  lang char(2) NOT NULL default '',
  organisation varchar(20) NOT NULL default '',
  organisation_name varchar(100) NOT NULL default '',
  vor_name varchar(50) NOT NULL default '',
  nach_name varchar(50) NOT NULL default '',
  street varchar(100) NOT NULL default '',
  city varchar(30) NOT NULL default '',
  postcode varchar(8) NOT NULL default '',
  phone varchar(50) NOT NULL default '',
  phone_free char(1) NOT NULL default 'n',
  phone_mobil varchar(50) NOT NULL default '',
  phone_mobil_free char(1) NOT NULL default '',
  fax varchar(50) NOT NULL default '',
  fax_free char(1) NOT NULL default '',
  email varchar(60) NOT NULL default '',
  email_free char(1) NOT NULL default '',
  web varchar(150) NOT NULL default '',
  andere_arten tinytext NOT NULL,
  ortschaften varchar(255) NOT NULL default '',
  landkreis varchar(255) NOT NULL default '',
  bemerk mediumtext NOT NULL,
  loeschen char(1) NOT NULL default 'n',
  loesch_bemerk tinytext NOT NULL,
  last_update datetime NOT NULL default '0000-00-00 00:00:00',
  active char(1) NOT NULL default 'n',
  PRIMARY KEY  (adress_id),
  KEY email (email),
  KEY region_id (region_id),
  KEY lang (lang),
  KEY name (vor_name,nach_name),
  FULLTEXT KEY landkreis (landkreis),
  FULLTEXT KEY ortschaften (ortschaften)
) TYPE=MyISAM;

CREATE TABLE insekt_adress_to_bundesland (
  id int(11) NOT NULL auto_increment,
  adress_id int(11) NOT NULL default '0',
  bundesland_id int(11) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY bundesland_id (bundesland_id,adress_id),
  KEY adress_id (adress_id,bundesland_id)
) TYPE=MyISAM;

Habe hier ein bischen mit kombinierten Indexen experimentiert...
Hat aber auch nichts gebracht....

CREATE TABLE insekt_adress_to_arten (
  id int(11) NOT NULL auto_increment,
  adress_id int(11) NOT NULL default '0',
  art_id int(11) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY adress_id (adress_id),
  KEY art_id (art_id)
) TYPE=MyISAM;

Und hier auch noch einmal das Statemant:

$sql ="SELECT * FROM insekt_adress_to_arten LEFT JOIN
insekt_adress_to_bundesland ON "
     ."(insekt_adress_to_arten.art_id = '".$tier."' "
     ."AND insekt_adress_to_bundesland.bundesland_id = '".$bundesland."') "
     ."LEFT JOIN insekt_adress ON (insekt_adress_to_arten.adress_id =
insekt_adress.adress_id "
     ."AND insekt_adress_to_bundesland.adress_id = insekt_adress.adress_id "
     ."AND insekt_adress.landkreis LIKE '%$eingabe%' "
     ."OR insekt_adress.ortschaften LIKE '%$eingabe%'"
     ."AND insekt_adress.active = 'y' )";

Liebe Gruesse,
wolf

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive