두 테이블을 합치겠습니다. 테이블 unique_nucleosome_re에는 약 600,000 개의 레코드가 있습니다. 다른 테이블에는 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 = '2L'
'1', 'SIMPLE', 'n', 'ref', 'start_idx,end_idx,chromo_start', 'chromo_start', '17', 'const', '68109', '100.00', 'Using where'
때 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'
때 는 X 또는 2L에 대한 레코드의 수는 거의 동일하다. 나는 지난 며칠 동안 보냈지 만 나는 그것을 이해할 수 없었다. 내가 볼 수 없거나 버그 일 수있는 간단한 실수 일 수 있습니다. 도와 주시겠습니까?
가끔 옵티 마이저가 도청되어 퍼지 결과가 나옵니다. –
다른 버전으로 사용해 볼 수 있습니까? (저는 느린 작가입니다) –
불행히도 다른 버전은 나와 함께 사용할 수 없습니다. 그것은 MySQL 서버입니다. 5.1.49-1ubuntu8.1 –