Hallo ich habe eine Abfrage über mehrere Tabellen und verwende dazu mehrere Join. Leider dauert die Abfrage ewig (über 1 min)
import_products hat ca. 30000 Einträge und ich will alle anzeigen die nicht in artikelliste oder import_igno stehen. Die Abfrage funktioniert auch aber dauert halt ewig.
Die Indexe sind richtig gesetzt (denke ich mal)
Was ist da falsch das die Abfrage so lange dauert?
Ich hab herausgefunden das es das LEFT JOIN artikelliste d ON a.uid = d.artikelnr_id ist was so lange dauert. (artikelliste hat ca. 6000 Einträge, import_igno ist noch leer)
Ein ("EXPLAIN SELECT.... bringt mir keine Anzeige sondern bei mysql_num_rows nur eine 4 satt 30000, komisch.
Wer hat eine Idee was ich optimieren muss um die Abfrage zu beschleunigen?
Normal dürfte die doch max. 0,1 sec dauern.
Besten Dank
Gruß Haxley
XAMPP auf WIN XP mit Mysql 5.0.51 und php 5.2
PHP-Code:
$query = erp_db_query (" SELECT a.uid FROM import_products a
LEFT JOIN import_product_to_cat b ON a.uid = b.productID
LEFT JOIN import_igno c ON a.uid = c.uid
LEFT JOIN artikelliste d ON a.uid = d.artikelnr_id
WHERE d.artikelnr_id IS NULL AND c.uid IS NULL ");
Die Indexe sind richtig gesetzt (denke ich mal)
PHP-Code:
CREATE TABLE `import_products` (
`uid` VARCHAR(15) NOT NULL DEFAULT '0',
`manufacturerName` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_german1_ci',
`productDescripion` VARCHAR(500) NULL DEFAULT NULL,
INDEX `uid` (`uid`)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
PHP-Code:
CREATE TABLE `artikelliste` (
`artikelnr_id` VARCHAR(15) NOT NULL DEFAULT '',
`products_id` INT(11) NOT NULL DEFAULT '6000',
INDEX `artikelnr_id` (`artikelnr_id`)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
PHP-Code:
CREATE TABLE `import_product_to_cat` (
`productID` VARCHAR(15) NOT NULL DEFAULT '0',
`catId` INT(15) NULL DEFAULT NULL,
INDEX `productID` (`productID`)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
PHP-Code:
CREATE TABLE `import_igno` (
`uid` VARCHAR(15) NOT NULL DEFAULT '',
`productName` VARCHAR(120) NOT NULL DEFAULT '',
`date_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX `uid` (`uid`)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
Ich hab herausgefunden das es das LEFT JOIN artikelliste d ON a.uid = d.artikelnr_id ist was so lange dauert. (artikelliste hat ca. 6000 Einträge, import_igno ist noch leer)
Ein ("EXPLAIN SELECT.... bringt mir keine Anzeige sondern bei mysql_num_rows nur eine 4 satt 30000, komisch.
Wer hat eine Idee was ich optimieren muss um die Abfrage zu beschleunigen?
Normal dürfte die doch max. 0,1 sec dauern.
Besten Dank
Gruß Haxley
XAMPP auf WIN XP mit Mysql 5.0.51 und php 5.2
Kommentar