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$$
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.
Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.