전 SQL 경험이 거의없는 프런트 엔드 개발자입니다. 나는 일하는 조직을위한 데이터 질의 시스템을 개발하는 것을 고려 중이다.다중 테이블과 Postgres의 테이블 인덱스
현재 대부분의 데이터는 일련의 스프레드 시트에 있습니다. 워크 시트의 계획 시나리오 (예 : "효율적")와 경제 부문 (예 : "농업")을 기준으로 한 다른 값을 가진 100 개의 워크 시트 (예 : 테이블)가 동일한 템플릿 (국가의 열 포함)에서 파생되었습니다. 각 워크 시트에는 약 8000 개의 행이 있습니다.
각 워크 시트마다 별도의 데이터베이스 테이블을 만들지 만 테이블을 통해 동일한 CREATE
문을 사용합니까? 이 경우 저는이 라인을 따라 인덱스를 생성 할 상상 :
CREATE INDEX sector_scenario_lower_country ON sector_scenario(lower(country));
내가 (각 sector_scenario 테이블에 대해 한 번)이 지수 100 번을 만들어야 할 것입니다. 내가 찾고있는 데이터 행을 찾고 싶을 때, 나는 정확한 테이블을 확인하기 위해 내 앱을 사용해야한다. (이것은 많은 문제가되거나 시간이 많이 걸리지 않아야한다.)
SELECT col4, col5, col6 FROM sector_scenario WHERE lower(country) = "brazil";
또는 시나리오 및 섹터 열을 데이터베이스 테이블에 추가 한 다음 모든 단일 워크 시트를 해당 단일 테이블에 복사해야합니까? 이 경우
, 난 그냥 한 번 다음과 같은 인덱스를 만들 것입니다 :
이CREATE INDEX main_table_idx ON main_table(scenario, sector, lower(country));
그때 꽤 정기적으로 다음과 같은 쿼리를 만들 것입니다 : 분명히
SELECT col4, col5, col6 FROM main_table WHERE scenario = "efficient" AND sector = "agriculture" AND lower(country) = "brazil";
을 두 번째 옵션이 많이 될 것입니다 설정 작업이 줄어 듭니다. 그러나 비슷한 성능을 기대할 수 있습니까?
정답은 데이터의 의미와 사용 방법에 따라 다릅니다. 나는이 책에 대해 좋은 소식을 들었는데, Mere Mortals를위한 데이터베이스 디자인. 몇 가지 고려 사항을 파악하는 데 도움이 될 수 있습니다. –