본질적으로 위치의 위도와 경도가있는 큰 이름의 테이블 (InnoDB)을 가지고있다. 내 쿼리는 다음과 같습니다Effecient InnoDB의 컬럼에있는 텍스트를위한 SELECT
SELECT columns FROM table
WHERE latitude BETWEEN latMin AND latMax
AND longitude BETWEEN longMin AND longMax
AND location LIKE '%mcdonalds%'
유일한 인덱스는 자동 증가 열의 기본 인덱스입니다.
FULLTEXT이하나의 옵션은 내가 위도와 경도에 인덱스를 추가하고
SELECT id FROM table WHERE
latitude BETWEEN latMin AND latMax
AND longitude BETWEEN longMin AND longMax
을하고 있었다 시도 옵션을 선택하지 않습니다 그래서 그때 내가 이노를 사용하는 것을 선호
$stringOfIds = implode(",",$result);
SELECT columns FROM table WHERE id IN ($stringOfIds)
AND location LIKE '%mcdonalds%'
$ 결과가 수천 개의 항목을 가질 수 있고 너무 많은 메모리를 필요로하기 때문에 확장 성이 좋지 않습니다.
지금은 전체 테이블 스캔 (위의 첫 번째 쿼리)을 사용했지만 쿼리 당 0.5-1 초가 걸리므로 도움이 될 것입니다.
감사
afaik, 전체 텍스트 색인에는 고유 한 값이 필요하지 않습니다. –
고유 한 레코드가 필요한 전체 텍스트 색인은 없습니다. 이것은 'like blahblah %'와 같은보다 효율적인 텍스트 검색을하는 방법 일뿐입니다. 어쨌든 전체 텍스트 색인은 고유 할 수 없습니다. 유일한 일반 인덱스 만 고유하게 만들 수 있습니다. –
아, 알았어요. 하지만 InnoDB를 사용하는 것을 선호하고 InnoDb는 FULLTEXT를 지원하지 않습니다. 맞습니까? –