>데이터 베이스 >MySQL 튜토리얼 >MySQL 테이블의 쉼표로 구분된 문자열에서 키워드를 분할하고 사후 쿼리를 위한 효율적인 관계를 생성하려면 어떻게 해야 합니까?

MySQL 테이블의 쉼표로 구분된 문자열에서 키워드를 분할하고 사후 쿼리를 위한 효율적인 관계를 생성하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-10-31 08:39:30390검색

How can I split keywords from a comma-separated string in a MySQL table and create efficient relationships for post querying?

PHP와 MySQL을 사용한 게시물의 키워드 분할

이러한 맥락에서 테이블의 단일 열에 저장된 키워드를 효율적으로 분할하고 이를 두 개의 새 테이블에 배포하여 데이터 무결성과 최적화된 쿼리를 보장합니다.

배경:
게시물 ID(post_id)와 해당 태그(tags_csv)를 포함하는 'post_tags'라는 테이블이 있습니다. ) 쉼표로 구분됩니다. 우리의 목표는 고유한 키워드를 저장하는 'keywords'와 키워드를 게시물과 연결하는 'post_keywords'라는 두 개의 추가 테이블을 만드는 것입니다.

최적화된 솔루션:
MySQL의 저장 프로시저를 활용할 수 있습니다. 이 작업을 효율적으로 수행합니다. 'normalise_post_tags' 절차는 게시물 태그를 꼼꼼하게 반복하여 키워드를 추출하고 이를 'keywords' 테이블에 삽입합니다. 그런 다음 키워드를 'post_keywords' 테이블의 게시물 ID와 연결합니다.

구현 세부 정보:

  1. 데이터 준비:

    • 게시물 ID와 태그가 포함된 'post_tags' 테이블을 생성합니다.
    • 키워드 이름에 대한 고유 키가 포함된 'keywords' 테이블을 생성합니다.
    • ' 키워드_id와 post_id의 복합 기본 키가 있는 post_keywords' 테이블.
  2. 저장 프로시저:

    • 'normalise_post_tags' 프로시저는 커서를 사용하여 'post_tags' 테이블을 반복합니다.
    • 'tags_csv' 문자열을 쉼표로 나누고 키워드를 잘라낸 후 존재하지 않는 경우 '키워드'에 삽입하여 키워드를 식별합니다.
    • 이 프로시저는 각 키워드에 대한keyword_id를 얻고(또는 키워드가 이미 존재하는 경우 ID를 검색하고) 'post_keywords' 테이블에 연관을 저장합니다.
  3. 실행:

    • 'normalise_post_tags' 프로시저를 실행하여 분할 및 삽입을 수행합니다.

의 장점 이 접근 방식:

  • 효율성: 저장 프로시저를 사용하면 반복적인 연결 및 실행 오버헤드가 제거되어 성능이 크게 향상됩니다.
  • 데이터 무결성: 'post_keywords' 테이블의 복합 기본 키는 키워드와 게시물 연결이 고유하도록 보장합니다.
  • 최적화된 쿼리: 'post_keywords'의 클러스터형 복합 기본 키 키워드-게시물 관계에 대한 효율적인 쿼리가 가능합니다.

사용 예:

'post_tags' 테이블에 데이터를 채운 후 'normalise_post_tags' 절차를 실행합니다. 키워드를 최적화된 방식으로 분할하고 게시물과 연결하여 'keywords' 및 'post_keywords' 테이블을 생성합니다.

위 내용은 MySQL 테이블의 쉼표로 구분된 문자열에서 키워드를 분할하고 사후 쿼리를 위한 효율적인 관계를 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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