>데이터 베이스 >MySQL 튜토리얼 >SQL에서 검색 정밀도가 감소하는 단일 행을 어떻게 효율적으로 찾을 수 있습니까?

SQL에서 검색 정밀도가 감소하는 단일 행을 어떻게 효율적으로 찾을 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-29 14:39:10986검색

How Can I Efficiently Find a Single Row with Decrementing Search Precision in SQL?

여러 SELECT 문을 사용하여 정밀도가 감소하는 단일 행 찾기

데이터베이스 작업에서는 다음을 사용하여 단일 행을 검색해야 할 수도 있습니다. 예를 들어, 결과를 찾을 때까지 검색 기준을 점진적으로 줄이는 것이 포함됩니다. 테이블:

문제:

테이블에서 다음 조건을 충족하는 행을 찾습니다.

  • name LIKE 'text'
  • 그룹_ID = 10

이 쿼리에 대한 결과가 없으면 다음 쿼리를 시도해 보십시오.

  • name LIKE 'text'

있는 경우 아직 이 쿼리에 대한 결과가 없으면 다음 쿼리를 시도해 보세요.

  • group_id = 10

해결책:

UNION ALL 문을 사용하면 이러한 모든 쿼리를 한 번에 실행할 수 있으므로 정확도가 떨어지는 검색이 가능합니다. 이 문은 다음과 같이 다양한 쿼리 결과를 지정된 순서로 병합합니다.

SELECT * FROM image WHERE name = 'text' AND group_id = 10
UNION ALL
SELECT * FROM image WHERE name = 'text'
UNION ALL
SELECT * FROM image WHERE group_id = 10
LIMIT 1;

최적화:

성능을 향상하려면 적절한 인덱스를 생성해야 합니다. 중요한. 이 예에서는 다음 열에 인덱스를 생성하는 것이 좋습니다.

  • image_name_grp_idx(이름, 그룹 ID)
  • image_grp_idx(그룹_ID)

LIMIT 1 절을 추가하여 Postgres 기준을 충족하는 첫 번째 행을 찾은 후 추가 쿼리를 중지하여 성능을 최적화할 수 있습니다.

일반화:

이 방법은 다양한 검색 매개변수를 사용하여 일반화할 수 있습니다. UNION ALL 문 안에 SELECT 문을 더 추가하면 됩니다.

정렬:

LIMIT 1 절은 단일 행만 반환하지만 관련성을 기준으로 결과를 정렬하려는 경우 이 방법은 실용적이지 않을 수 있습니다. 이 경우 정렬을 수행하려면 더 복잡한 쿼리가 필요합니다.

위 내용은 SQL에서 검색 정밀도가 감소하는 단일 행을 어떻게 효율적으로 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.