UUUUH du gott :-)
also wenn jetzt nix im cache war siehts gut aus....
das ist die tabelle:
CREATE TABLE `yp_ent_par_materialize` (
`YP_INSTANCE_ID` int(11) NOT NULL,
`YP_ENTITY_TYPE_ID` int(11) NOT NULL,
`YP_PARAMETER_TYPE_ID` int(11) NOT NULL,
`YP_PARAMETER_VALUE_STRING` varchar(64) NOT NULL,
`PRIM_KEY` int(11) NOT NULL auto_increment,
PRIMARY KEY (`PRIM_KEY`),
KEY `YP_ENT_PAR_MATERIALIZE_IDX0` (`YP_INSTANCE_ID`,`YP_ENTITY_TYPE_ID`,`YP_PARAMETER_VALUE_STRING`),
KEY `YP_ENT_PAR_MATERIALIZE_IDX1` (`YP_PARAMETER_TYPE_ID`,`YP_PARAMETER_VALUE_STRING`,`YP_ENTITY_TYPE_ID`)
) ENGINE=MyISAM AUTO_INCREMENT=703167 DEFAULT CHARSET=latin1$$
(ersetze YP_INSTANCE mit Kunde, YP_ENTITY mit warenkorb und YP_PARAMETER mit ware)
CREATE TABLE `waren_assoc_all` (
`kunde_ID` int(11) NOT NULL,
`warenkorb_TYPE_ID` int(11) NOT NULL,
`ware_TYPE_ID` int(11) NOT NULL,
`ware_STRING` varchar(64) NOT NULL,
`PRIM_KEY` int(11) NOT NULL auto_increment,
PRIMARY KEY (`PRIM_KEY`),
KEY `waren_assoc_all_IDX0` (`kunde_ID`,`warenkorb_TYPE_ID`,`ware_STRING`),
KEY `waren_assoc_all_IDX1` (`ware_TYPE_ID`,`ware_STRING`,`warenkorb_TYPE_ID`)
) ENGINE=MyISAM AUTO_INCREMENT=703167 DEFAULT CHARSET=latin1$$
der select
SELECT * FROM yp.yp_instance i1
JOIN (
SELECT q1.YP_INSTANCE_ID
FROM
(
SELECT YP_INSTANCE_ID FROM yp.yp_ent_par_materialize
WHERE YP_ENTITY_TYPE_ID = 1 #Equipment
AND YP_PARAMETER_TYPE_ID=104 #TYPE__EQUIPMENT
AND (YP_PARAMETER_VALUE_STRING='SFC-C' OR YP_PARAMETER_VALUE_STRING='SFP-G')
) q1
INNER JOIN(
SELECT YP_INSTANCE_ID FROM yp.yp_ent_par_materialize
WHERE YP_ENTITY_TYPE_ID = 1 #Equipment
AND YP_PARAMETER_TYPE_ID=109 #CHANNEL__PROVISION
AND (YP_PARAMETER_VALUE_STRING='G1310')
) q2
ON q1.YP_INSTANCE_ID=q2.YP_INSTANCE_ID
INNER JOIN(
SELECT YP_INSTANCE_ID FROM yp.yp_ent_par_materialize
WHERE YP_ENTITY_TYPE_ID = 1 #Equipment
AND YP_PARAMETER_TYPE_ID=113 #RATE_PROVISION
AND (YP_PARAMETER_VALUE_STRING='HS' OR YP_PARAMETER_VALUE_STRING='2G5' OR YP_PARAMETER_VALUE_STRING='CL')
) q3
ON q2.YP_INSTANCE_ID=q3.YP_INSTANCE_ID
INNER JOIN(
SELECT YP_INSTANCE_ID FROM yp.yp_ent_par_materialize
WHERE YP_ENTITY_TYPE_ID = 1 #Equipment
AND YP_PARAMETER_TYPE_ID=431 #FIBER
AND (YP_PARAMETER_VALUE_STRING='SM')
) q4
ON q3.YP_INSTANCE_ID=q4.YP_INSTANCE_ID
) i2
ON i1.YP_INSTANCE_ID=i2.YP_INSTANCE_ID
WHERE YP_INSTANCE_TYPE_ID = 3 #VARIANT
AND YP_CATEGORY_TYPE_ID = 3000 #PLUG
AND YP_INSTANCE_HIDDEN = 0;
brachte die 4 gewünschten zeilen in 0,015 sekunden. EDIT: nach neustart von server und workbench waren es trotzdem noch schicke 30ms.
kannst du mir das mit der reihenfolge erklären? nach was richtet sich das? /EDIT
wusste gar nicht, dass die reihenfolge im index was zu sagen hat...
weißt du, ob man den cache irgendwie invalidieren kann? MySQL Workbench neustarten oder muss ich an den server ran?
Also wenn du in berlin wohnst, bekommste n bier oder nen tee oder so ;-)
Edited 1 time(s). Last edit at 09/20/2010 07:13AM by Gerald Koch.