관계형 데이터베이스에 인덱스를 더 추가하는 것이 워크로드 속도를 높이는 데 항상 도움이 되는 것은 아닌 이유를 설명해 주세요.
높은 수준에서 특정 테이블에 대한 인덱스는 쿼리가 인덱스가 포함하는 열의 호환 가능한 하위 집합을 참조하고 인덱스 사용 비용이 다른 대안(예: 단순히 전체 테이블을 스캔하거나 다른 인덱스 사용)보다 낮다면 테이블에 액세스하는 쿼리의 실행 속도를 높일 수 있습니다. 동시에 인덱스는 테이블을 최신 상태로 유지해야 하므로 테이블 업데이트(새 행의 삽입 또는 삭제, 인덱스가 포함하는 열에 대한 기존 행 업데이트)가 있을 때마다 관계형 데이터베이스 시스템이 인덱스에도 업데이트를 전파해야 하므로 비용이 더 많이 듭니다. 따라서 워크로드에 인덱스를 추가하는 것의 유용성은 인덱스의 이점을 누릴 수 있는 쿼리의 비율과 쿼리와 업데이트의 혼합에 따라 달라집니다.
Please explain why adding more indexes to a relational database is not always beneficial for speeding up workloads.
At a high level, an index over a specific table can speed up the execution of a query that accesses the table provided that the query references a compatible subset of columns that the index covers and that the cost of using the index is lower than alternatives (e.g., simply scanning the whole table or using another index). At the same time, the index needs to be kept up-to-date with the table, which means that each table update (insertion or deletion of new rows, or updates to existing rows for the columns that the index covers) will now cost more as the relational database system has to also propagate the update to the index. Thus, the usefulness of adding an index to a workload will depend on the fraction of queries that can benefit from the index, and on the mix of queries and updates.