테이블이 있고 열 중 하나가 TEXT 유형입니다. 주어진 문자열과 비슷한 텍스트가있는 행을 검색해야합니다.MySQL : 쿼리로 시작하는 TEXT 필드가있는 행을 검색합니다.
문자열이 꽤 길어서 (10000 바이트라고 가정 해 봅시다) 문자열의 처음 20 바이트 만 비교하는 것으로 충분하다고 판단했습니다. 내가 넣어
SELECT * FROM `table` WHERE STRCMP(SUBSTRING(`description`,0,20),'string_to_compare') = 0
또는
SELECT * FROM `table` WHERE `description` LIKE 'string_to_compare%')
참고 :
KEY `description` (`description`(20))
그래서 내가 지금 무엇을 원하는 다음 쿼리 중 하나입니다 : 내가 키를 생성 빨리이 검색을 수행하려면 끝에 하나의 백분율 기호 string_to_compare DB에 첫 번째 바이트 만 비교한다고 말하면됩니다.
MySQL의 두뇌가 키를 사용하고 여분의 움직임을하지 않기를 바란다.
질문 :
- 쿼리가 더 나은 어떤 차이가 있나요? DB 엔진 (MyISAM)이 더 명확하게 이해할 수 있도록 개인적으로 두 번째를 선호합니다.
- MyISAM이 이러한 쿼리에 대해 효율적인 코드를 작성한다는 것이 맞습니까?
- PDO의 prepare 문에 '%'를 어떻게 삽입합니까?
SELECT * FROM table WHERE description LIKE ":text%"
?
MyISAM이 죽어 가고 있습니다; 그것을 사용하지 마십시오. –
고마워, @RickJames –