2014-09-02 8 views
0

나는 몇 번 레일에서 다음 마이그레이션을 보았다 색인의 열 우선 순위가 가장 높습니까? 쿼리 속도가 빨라 집니까? 미리 감사드립니다.열 '순서는

답변

0

인덱스를 설명하는 가장 좋은 방법은 전화 번호부 예제와 같다고 생각합니다. 전화 번호부는 성, 이름으로 구성됩니다. 자신의 성이나 성, 이름으로 쉽게 사람을 볼 수는 있지만, 이름을 통해 누군가를 쉽게 볼 수는 없습니다. 이름으로 쉽게 검색하려면 별도의 색인이 필요합니다.

예를 들어 다시 살펴보면 customer_id 및 product_id를 쉽게 찾을 수 있도록 customer_id 및 product_id에 색인이 있습니다. 그러나 첫 번째 색인만으로는 product_id로 쉽게 검색 할 수 없습니다. 따라서 두 번째 색인을 사용하면 product_id 또는 product_id와 customer_id를 쉽게 찾을 수 있습니다.

사용자가 has_many :through relationship 인 경우 조인 테이블에는 사용자가 제시 한 복합 키로 조인과 관련된 두 속성에 고유 한 인덱스가 있어야합니다. 나는이 2 개 인덱스를 사용하는 경우 When to add what indexes in a table in Rails

+0

그래서, 내가 PRODUCT_ID 및 CUSTOMER_ID에 대한 인덱스를 만들 필요가 없습니다 :

이 질문에 대한 대답은 레일에 인덱스를 사용하는 경우에 좀 더 많은 정보를위한 아주 좋은 자원이다 그것은 이미 2 열의 색인으로 완료 되었기 때문에 별도로? – malcoauri

+0

그리고 product_id 및 customer_id로 레코드를 가져와야 할 때 예제의 첫 번째 인덱스 또는 두 번째 인덱스를 사용하여 더 빨리 수행 할 수 있습니다. 왜 내가 둘 다 필요합니까? – malcoauri

+0

두 번째 색인이 이미 색인을 생성하고 있으므로 product_id에 대해서만 별도의 색인을 생성 할 필요가 없습니다. 둘 다 사용하면 속도에 대한 옵션이 제공됩니다. 일부 쿼리는 customer_id와 vice verses 앞에 product_id를 올려 놓으면 더 빨리 실행될 수 있습니다. 멀티 키 인덱스를 사용하면보다 고유 한 값을 먼저 사용하여 레코드 수를 줄일 수 있습니다. 따라서 실제로 실행중인 쿼리와 데이터에 따라 달라집니다. – ChrisBarthol