> 데이터 베이스 > MySQL 튜토리얼 > MySQL에서 배열 데이터를 효율적으로 저장하고 쿼리하려면 어떻게 해야 합니까?

MySQL에서 배열 데이터를 효율적으로 저장하고 쿼리하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2024-11-29 01:04:11
원래의
1067명이 탐색했습니다.

How Can I Efficiently Store and Query Array Data in MySQL?

MySQL에 배열 저장: 대체 접근 방식

단일 MySQL 필드에 데이터 배열을 저장하는 방법에 대한 질문은 오랫동안 수수께끼였습니다. 개발자. serialize() 및 unserialize()는 솔루션을 제공할 수 있지만 쿼리 가능성을 희생합니다.

관계형 데이터 검사

MySQL에 배열을 저장하는 가장 좋은 접근 방식은 관계형 데이터를 수정하고 이에 따라 스키마를 수정합니다. 배열을 단일 필드에 집어넣는 대신 배열의 내용을 수용할 수 있는 테이블을 만드는 것이 좋습니다.

테이블 구조 예

예를 들어, 중첩된 배열의 배열이 있습니다:

$a = array(
    1 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
    2 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
);
로그인 후 복사

이 경우 다음과 같은 테이블을 만듭니다. 이:

CREATE TABLE test (
  id INTEGER UNSIGNED NOT NULL,
  a INTEGER UNSIGNED NOT NULL,
  b INTEGER UNSIGNED NOT NULL,
  c INTEGER UNSIGNED NOT NULL,
  PRIMARY KEY (id)
);
로그인 후 복사

기록 삽입 및 검색

테이블에 배열을 저장하려면 삽입 쿼리를 사용할 수 있습니다.

foreach ($t as $k => $v) {
    $query = "INSERT INTO test (id," .
            implode(',', array_keys($v)) .
            ") VALUES ($k," .
            implode(',', $v) .
            ")";
    $r = mysql_query($query,$c);
}
로그인 후 복사

기록을 검색하려면 선택 쿼리를 사용할 수 있습니다.

function getTest() {
    $ret = array();
    $c = connect();
    $query = 'SELECT * FROM test';
    $r = mysql_query($query, $c);
    while ($o = mysql_fetch_array($r, MYSQL_ASSOC)) {
        $ret[array_shift($o)] = $o;
    }
    mysql_close($c);
    return $ret;
}
로그인 후 복사

이 접근 방식 데이터베이스 내의 배열 데이터를 쉽게 쿼리하고 조작할 수 있습니다.

위 내용은 MySQL에서 배열 데이터를 효율적으로 저장하고 쿼리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿