Ich bin zwei Tabellen beitreten. Tabelle unique_nucleosome_re hat etwa 600.000 Datensätze. Eine andere Tabelle hat 20.000 Datensätze. Die seltsame Sache ist die Leistung und die Antwort von EXPLAIN ist abhängig unter der Bedingung in der WHERE-Klausel. Als es war WHERE n.chromosome = 'X' dauerte es etwa 3 Minuten. Als es war WHERE n.chromosome = '2L' dauerte es mehr als 30 Minuten und die Verbindung ist weg.MySQL langsame Abfrage und EXPLAIN gab seltsame Antworten
SELECT n.name , t.transcript_start , n.start
FROM unique_nucleosome_re AS n
INNER JOIN tss_tata_range AS t
ON t.chromosome = n.chromosome
WHERE (t.transcript_start > n.end AND t.ts_minus_250 < n.start)
AND n.chromosome = 'X'
ORDER BY t.transcript_start
;
Dies ist die Antwort von EXPLAIN. , wenn die WHERE
'1', 'SIMPLE', 'n', 'ALL', 'start_idx,end_idx,chromo_start', NULL, NULL, NULL, '606096', '48.42', 'Using where; Using join buffer'
n.chromosome = 'X' ist, wenn die WHERE
'1', 'SIMPLE', 'n', 'ref', 'start_idx,end_idx,chromo_start', 'chromo_start', '17', 'const', '68109', '100.00', 'Using where'
Die Anzahl der Datensätze für X oder 2L n.chromosome = '2L' ist fast gleich sind. Ich verbrachte die letzten paar Tage, aber ich konnte es nicht herausfinden. Es kann ein einfacher Fehler sein, den ich nicht sehen kann oder der ein Fehler ist. Können Sie mir helfen?
Manchmal ist der Optimierer abgehört, so dass Sie einige unscharfe Ergebnisse haben. –
Können Sie es auf einer anderen Version versuchen? (Ich bin ein langsamer Autor) –
Leider ist jetzt keine andere Version bei mir verfügbar. Es ist MySQL Server 5.1.49-1ubuntu8.1 –