당신은 당신이 더 도움이 될 수 있습니다 (LetterIdx, 워드)에 걸쳐 종합 지수를 작성하는 경우는, 빨리이처럼 많이 실행 찾을 수 있습니다. 이것은 나의 추측이 말씀의 LetterIdx = 첫 글자는,이 "
# First create index on Word, then
SELECT Word,
COUNT(Word) AS WordCount
FROM `keywords`
WHERE `Word` like 'A%'
GROUP BY Word
ORDER BY Word;
에 관해서는 더 나은 작동 할 수 있음을 맞으면 대신이 단일 열 인덱스
CREATE INDEX keywords_l_w on keywords(letterIdx, Word)
SELECT Word,
COUNT(Word) AS WordCount
FROM `keywords`
WHERE `LetterIdx` = 'A'
GROUP BY Word
ORDER BY Word;
의 2 열 인덱스입니다 왜 내 쿼리 중 하나가 느린 지, 인덱스가 있고 방금 새 쿼리를 만들었습니다. "
레코드의 모든 열을 검색하도록 요청했기 때문입니다. 정말 필요한가요? 인덱스 (모든 데이터의 ~ 1/26)를 사용할 수 있다고해도 다른 모든 열을 검색하기 위해서는 데이터 페이지를 조회해야합니다. 표지 인덱스 (letteridx, word)가 있으면 데이터로 돌아갈 필요가 없습니다.
* 및 GROUP BY는 엄격한 SQL 관점에서 좋은 조합이 아닙니다. 리처드 말했듯이
유일한 문제는 LetterIdx에서 AI에 숫자도 포함된다는 것입니다. 그래서 A %는 이것을 포함하지 않을 것입니다. 첫 번째 쿼리는 속도에 아무런 영향을 미치지 않았습니다. 더 이상의 아이디어? – Jules
(letteridx, word)에 색인을 생성 했습니까? 그것에 대해서도 설명 할 기회가 있습니까? – RichardTheKiwi
인덱스는 2 개의 단일 열 인덱스가 아니라 2 개의 열에 걸쳐 있습니다. 답변이 업데이트되었습니다. FYI, 순서는 중요합니다 (Word, LI)! = (LI, Word) – RichardTheKiwi