그룹화 속도를 향상시키는 방법
P粉155832941
P粉155832941 2023-09-05 10:24:40
0
1
415

행이 30억 개가 넘는 큰 테이블이 있는데 이제 쿼리를 실행하는 데 3일이 걸립니다.

내 쿼리는 다음과 같습니다.

주파수 단어(단어, 빈도, 파일 이름)에 삽입 단어 선택, 빈도(*), 최대값(파일 이름) allwordstemp에서 단어별로 그룹화

기본적으로 내 쿼리는 allwordstemp 테이블에서 단어별로 그룹화하는 것이며 빈도가 1일 때 filename을 알고 싶습니다. 그래서 max(filename)을 추가했습니다. max와 같은 집계 함수에 포함됩니다. 빈도가 1보다 크면 filename 값도 필요하지 않습니다. 두 테이블 모두 단어와 파일 이름에 대해 2개의 인덱스를 가지고 있습니다.

allwordstemp 테이블(파일 이름은 id 파일입니다):

CREATE TABLE `allwordstemp`( `단어` varchar(45) DEFAULT NULL, `파일 이름` int(11) DEFAULT NULL, KEY `idx_allwordstemp_word`(`단어`), KEY `idx_allwordstemp_filename` (`파일 이름`) ) 엔진=InnoDB DEFAULT CHARSET=utf8;

주파수단어 테이블:

CREATE TABLE `주파수 단어`( `단어` varchar(45) DEFAULT NULL, `주파수` int(11) DEFAULT NULL, `파일 이름` int(11) DEFAULT NULL, KEY `idx_주파수단어_단어`(`단어`), KEY `idx_주파수단어_주파수`(`주파수`), KEY `idx_주파수단어_파일 이름`(`파일 이름`) ) 엔진=InnoDB DEFAULT CHARSET=utf8;

선택 설명:

+----+---------------+--------------- -+---+---------+---------------+------- ---- ------------+---------+------+------------+--- ---- ---+-------------+ | ID | 선택 가능 | 키 | 필터링 | +------+---------------+------------+--------------- -+-- ----+---------------+---------+-- -- -----+------+------------+----------+------------ -- + | 1 | 단순 | allwordstemp | idx_allwordstemp_word | +------+---------------+------------+--------------- -+-- ----+---------------+---------+-- -- -----+------+------------+----------+------------ -- +

검색어를 더 빠르게 만들려면 어떻게 해야 합니까?

P粉155832941
P粉155832941

모든 응답 (1)
P粉741678385

필터가 단어나 파일 이름이 아닌 빈도를 기반으로 하는 것 같습니다. 그래서 먼저 모든 단어를 빈도별로 색인화하겠습니다.

그런 다음 빈도가 정수라고 가정하면 다음과 같이 WHERE 절을 추가합니다.

으아악

위 내용은 다양한 파일 이름에서 한 번만 나타나는 모든 단어 목록을 제공합니다.

이 정보가 도움이 되기를 바라며 최선을 다하겠습니다!

    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!