나는 내 프로젝트를위한 데이터베이스를 만들고있다. 현재 이미지가있는 테이블과 제품이있는 테이블이 있습니다.ID의 배열을 쿼리하는 가장 빠른 방법은 무엇입니까?
product
Column | Type |
----------------+-----------+
id | integer |
images | integer[] |
display_image | integer |
...
image
Column | Type |
----------------+-----------+
id | integer |
data | text |
기본 아이디어는 하나의 제품에 속한 모든 이미지의 ID를 product.images 필드에 저장하는 것입니다. 특정 이미지에 해당 제품을 찾는 것은 데이터베이스의 유스 케이스 일 것입니다. 또한 하나의 이미지는 여러 제품에 속할 수 있습니다.
이제 어떤 제품이 이미지에 속하며 데이터베이스에 수백만 개의 제품과 이미지가 저장되는 경우 결과를 얻는 가장 빠른 방법인지 확실하지 않습니다. 하나의 이미지와 관련된 모든 제품을 저장하는 곳에 image.products 필드를 추가하는 것이 더 빠릅니까?
(I 데이터베이스로 PostgreSQL을 사용하고) 현재 같을 것이다 특정 이미지 제품을 얻을 수있는 쿼리 :
SELECT * from product where image.id = ANY(product.images)
상의 부담이 될 것입니다 유지해야 할 다른 필드를 갖는 API 측. 위에서 언급 한 쿼리가 나중에 성능에 영향을 미칠 수있는 경우이를 위해 리팩토링을 수행하기 전에 경험 많은 의견을 듣고 싶습니다.
답장을 보내 주셔서 감사합니다.
아, 이전 "구분 된 열"질문. SQL은 그것이 실행되는 근본적인 철학/수학 (데이터베이스 - SQL 구현 - 때때로 유용 할 것 같은 유형을 제공하는 것이 편리 할 때가 있음)과 상반되기 때문에이를 처리하지 않도록 명시 적으로 고안되었습니다. 이미지 키를 자신의 테이블로 가져 오면 데이터베이스가 가장 빠릅니다. [이 질문도] (https://stackoverflow.com/q/3653462/812837). [이 페이지 하단의 팁] (https://www.postgresql.org/docs/current/static/arrays.html)을보십시오. –