私は2つのテーブルに参加しています。 テーブルunique_nucleosome_reには、約60万レコードがあります。 別のテーブルには20,000レコードがあります。 WHERE句の条件に、 によってEXPLAINの回答が異なり、奇妙なことがパフォーマンスです。 の場合n.chromosome = 'X' 約3分かかりました。 の場合n.chromosome = '2L' それは30分以上かかって接続が終了しました。MySQLの低速クエリとEXPLAINが奇妙な回答を返しました
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
;
これはEXPLAINの回答です。 WHEREがn.chromosomeある場合= 'X'
'1', 'SIMPLE', 'n', 'ALL', 'start_idx,end_idx,chromo_start', NULL, NULL, NULL, '606096', '48.42', 'Using where; Using join buffer'
WHEREがn.chromosome = '2L'
'1', 'SIMPLE', 'n', 'ref', 'start_idx,end_idx,chromo_start', 'chromo_start', '17', 'const', '68109', '100.00', 'Using where'
ときXまたは2Lのレコードの数がほぼ同じです。 私は最後のカップルの日を過ごしましたが、私はそれを理解できませんでした。それは私が見ることができない、またはバグかもしれない簡単な間違いかもしれません。 私を助けることができますか?
時にはオプティマイザが盗んでいるので、あいまいな結果が出ることがあります。 –
別のバージョンで試すことはできますか? (私は遅い作家です) –
残念ながら、私には他のバージョンはありません。 MySQLサーバ5.1.49-1ubuntu8.1 –