처음에는이 주제가 매우 일반적인 주제라고해야합니다. 나는 모든 관련 주제를 연구했지만 대답을 찾을 수 없습니다. 세 개의 테이블이 있습니다. 메시지 테이블에는 300.000, 태그 테이블에는 1 백만 개, message_tag 테이블에는 약 1,000 만 개의 행이 있습니다. message_tag.message_id 및 message_tag.tag_id 열에는 색인이 있습니다. 내 목적은 spesified 태그를 링크하는 선택 메시지입니다. 그러나 쿼리 시간이 너무 깁니다. 20 초보다 짧은 쿼리 시간은 없습니다. 반면에 가끔 쿼리는 긴 쿼리 시간 때문에 결과를 제공하지 않습니다. 테이블 구조와 내 쿼리는 아래와 같습니다. 이 문제를 어떻게 처리 할 수 있습니까? 나는 모든 제안을 공개한다. 심지어 새 스키마로 테이블을 다시 만들 수 있습니다. 데이터베이스는 MySql이고 스토리지 모터는 MyIsam입니다. .MySQL의 쿼리 최적화
table name: messages
columns :
id (int)
message (vharchar)
message_poster (vharchar)
table name: tags
id (int)
tag (vharchar)
table name : message_tag
columns :
message_id (int)
tag_id (int)
내 쿼리 :
SELECT messages.message_poster,
messages.message
FROM tags, messages, message_tag
WHERE message_tag.tag_id=191
AND messages.id= message_tag.message_id
모든 관련 주제를 읽었지만 거기에있는 "색인"에 대해 찾았습니까? 가지고있는 색인 (색인?)을 알려 주실 수 있으면 그렇게하십시오. D – Nanne
'SHOW CREATE TABLE messages','SHOW CREATE TABLE tags' 및 'SHOW CREATE TABLE message_tag'의 출력을 제공하십시오. – RandomSeed
어떻게 지내세요? 'tags' 테이블을 사용하고 있습니까? 그것은 from 목록에 있지만'select' 또는'where' 절에는 없습니다. –