Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

와일드카드(%%)를 사용하여 MySQL 검색 성능을 향상시키시겠습니까?

<시간/>

아니오, MySQL은 인덱스를 사용할 수 없기 때문에 선행 와일드카드가 있을 때마다 MySQL은 검색 성능을 향상시키지 않습니다. 'anyLetter%'로 변경하면 인덱스를 사용할 수 있습니다.

아래 구문은 후행 와일드카드와 함께 사용하는 것이 좋습니다. 구문은 다음과 같습니다 -

SELECT *FROM yourTableName WHERE yoorColumnName LIKE 'anyLetter%';

테이블을 생성하는 쿼리는 다음과 같습니다 -

mysql> create table TrailingWildCardDemo -> ( -> Id int NOT NULL AUTO_INCREMENT, -> Name Varchar(20), -> PRIMARY KEY(Id) -> );쿼리 OK, 영향을 받는 행 0개(0.71초) 

이제 insert 명령을 사용하여 테이블에 일부 레코드를 삽입할 수 있습니다. 쿼리는 다음과 같습니다 -

mysql> insert into TrailingWildCardDemo(Name) values('John');Query OK, 1개의 row가 영향을 받았습니다(0.13초)mysql> insert into TrailingWildCardDemo(Name) values('Johnson');Query OK, 1개의 row가 영향을 받았습니다( 0.17초)mysql> TrailingWildCardDemo(이름) 값('Mike')에 삽입 0.23초)mysql> TrailingWildCardDemo(이름) 값('Adam')에 삽입 0.16초)mysql> TrailingWildCardDemo(Name) values('James')에 삽입, 쿼리 확인, 영향을 받는 행 1개(0.19초)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> 선택 *from TrailingWildCardDemo;

다음은 출력입니다 -

+----+---------+| 아이디 | 이름 |+----+---------+| 1 | 존 || 2 | 존슨 || 3 | 마이크 || 4 | 케빈 || 5 | 아담 || 6 | 에단 || 7 | James |+----+---------+7행 세트(0.00초)

다음은 후행 와일드카드 쿼리입니다 -

mysql> select *from TrailingWildCardDemo where Name LIKE 'j%';

다음은 출력입니다 -

+----+---------+| 아이디 | 이름 |+----+---------+| 1 | 존 || 2 | 존슨 || 7 | James |+----+---------+3행 세트(0.00초)