반응형
MariaDB 완전 텍스트 색인을 사용하지 않는 매우 간단한 MATCH-AGHINE 쿼리?
다음 표는 다음과 같습니다.SHOW CREATE TABLE
:
CREATE TABLE `lname` (
`lnameid` binary(16) NOT NULL,
`lid` binary(16) NOT NULL,
`name` varchar(200) NOT NULL,
`namerank` int(11) DEFAULT NULL,
`score` float DEFAULT NULL,
PRIMARY KEY (`lnameid`),
KEY `lid` (`lid`),
FULLTEXT KEY `name` (`name`),
CONSTRAINT `lname_ibfk_1` FOREIGN KEY (`lid`) REFERENCES `sl` (`slid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci
이 테이블에는 약 230,000개의 줄이 있습니다.모든 행의 이름 열 값이 NULL이 아닙니다.
다음과 같은 질문이 있습니다.
EXPLAIN SELECT MATCH(lname.name) AGAINST ('maillot' IN BOOLEAN MODE) AS nms FROM lname;
+------+-------------+-----------------+------+---------------+------+---------+------+--------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-----------------+------+---------------+------+---------+------+--------+-------+
| 1 | SIMPLE | lname | ALL | NULL | NULL | NULL | NULL | 228370 | |
+------+-------------+-----------------+------+---------------+------+---------+------+--------+-------+
제 질문은: 알겠습니다.possible_keys
이라NULL
(및Extra
비어 있음), 이는 내가FULLTEXT
인덱스가 어떻게든 사용되지 않고 있습니까?
쿼리 실행 속도가 느린 것 같습니다.
Linux에서 MariaDB 10.5.19를 사용하고 있습니다.
모든 행에 대한 일치 계수를 계산하는 것이므로 인덱스가 필요하지 않지만 다음으로 변경할 수 있습니다.
CREATE TABLE `lname` (
`lnameid` binary(16) NOT NULL,
`lid` binary(16) NOT NULL,
`name` TEXT NOT NULL,
`namerank` int(11) DEFAULT NULL,
`score` float DEFAULT NULL,
PRIMARY KEY (`lnameid`),
KEY `lid` (`lid`),
FULLTEXT KEY `name` (`name`)#,
#CONSTRAINT `lname_ibfk_1` FOREIGN KEY (`lid`) REFERENCES `sl` (`slid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci
INSERT INTO lname vALUES (1,1,'a',1,1)
EXPLAIN SELECT MATCH(name) AGAINST ('maillot' IN BOOLEAN MODE) AS nms FROM lname
WHERE MATCH(name) AGAINST ('maillot' IN BOOLEAN MODE) > 1;
이드 | select_type | 테이블 | 유형 | possible_key | 열쇠 | key_len | 심판을 보다 | 행들 | 추가의 |
---|---|---|---|---|---|---|---|---|---|
1 | 간단하죠. | 내 이름 | 전문 | 이름. | 이름. | 0 | 1 | 사용 위치 |
이 경우 데이터베이스는 적합한 일치 항목을 찾아야 하므로 인덱스를 사용하여 해당 행을 더 빨리 찾아야 합니다.
언급URL : https://stackoverflow.com/questions/76505771/mariadb-very-simple-match-against-query-not-using-fulltext-index
반응형
'programing' 카테고리의 다른 글
부트스트랩: 버튼에 입력 정렬 (0) | 2023.07.28 |
---|---|
CSS3 미디어 쿼리가 모바일 장치에서 작동하지 않는 이유는 무엇입니까? (0) | 2023.07.28 |
mysql에서 100억 행의 키/값 테이블을 어떻게 정의합니까? (0) | 2023.07.28 |
Angular 8 응용 프로그램에서 Internet Explorer를 지원하려면 어떻게 해야 합니까? (0) | 2023.07.28 |
오름차순 및 내림차순 정렬에 의한 MYSQL 순서 (0) | 2023.07.28 |