programing

MariaDB 완전 텍스트 색인을 사용하지 않는 매우 간단한 MATCH-AGHINE 쿼리?

megabox 2023. 7. 28. 21:55
반응형

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

반응형