집 >데이터 베이스 >MySQL 튜토리얼 >SQL에서 여러 LIKE 조건을 사용할 때 임시 테이블의 효율성을 어떻게 향상시킬 수 있습니까?
임시 테이블을 사용하여 LIKE 연산자의 여러 조건 처리
SQL에서는 LIKE 연산자를 사용하여 문자열 값에 대한 패턴 일치를 수행합니다. OR 연산자를 사용하여 여러 LIKE 조건을 결합할 수 있지만 더 나은 해결 방법은 임시 테이블을 사용하는 것입니다.
다음 설명을 고려하세요.
<code class="language-sql">select * from tbl where col like ('ABC%','XYZ%','PQR%');</code>
이 문은 col 열이 ABC%, XYZ% 또는 PQR% 패턴과 일치하는 tbl 테이블의 모든 행을 검색하도록 설계되었습니다. OR을 사용하는 것은 효율적인 접근 방식이지만, 많은 조건의 경우 지루하고 비효율적일 수 있습니다.
대신 일치시키려는 모든 패턴을 저장하기 위해 패턴이라는 임시 테이블을 만들 수 있습니다.
<code class="language-sql">CREATE TEMPORARY TABLE patterns ( pattern VARCHAR(20) ); INSERT INTO patterns VALUES ('ABC%'), ('XYZ%'), ('PQR%');</code>
임시 테이블을 생성한 후 LIKE 연산자를 사용하여 tbl 테이블과 조인할 수 있습니다.
<code class="language-sql">SELECT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);</code>
이 쿼리에서는 패턴 테이블의 패턴 열을 사용하여 tbl 테이블의 col 열을 일치시킵니다. 결과는 패턴 테이블의 모든 패턴과 일치하는 tbl의 행 목록입니다.
tbl의 행이 여러 패턴과 일치하면 결과에 여러 번 표시된다는 점에 유의하는 것이 중요합니다. 이를 원하지 않는 경우 DISTINCT 쿼리 수정자를 사용할 수 있습니다.
<code class="language-sql">SELECT DISTINCT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);</code>
이렇게 하면 tbl의 각 행이 여러 패턴과 일치하더라도 결과에 한 번만 표시됩니다.
위 내용은 SQL에서 여러 LIKE 조건을 사용할 때 임시 테이블의 효율성을 어떻게 향상시킬 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!