Đây là câu hỏi mà tôi đã có mãi mãi.Chỉ số MySQL và đặt hàng
Theo như tôi biết thứ tự các chỉ số quan trọng. Vì vậy, một chỉ mục như [first_name, last_name]
không giống như [last_name, first_name]
, phải không?
Nếu tôi chỉ xác định chỉ số đầu tiên, điều đó có nghĩa rằng nó sẽ chỉ được sử dụng cho
SELECT * FROM table WHERE first_name="john" AND last_name="doe";
và không cho
SELECT * FROM table WHERE last_name="doe" AND first_name="john";
Kể từ khi tôi đang sử dụng một ORM, tôi không có ý tưởng trong thứ tự các cột này sẽ được gọi. Điều đó có nghĩa là tôi phải thêm các chỉ số trên tất cả các hoán vị? Đó là doable nếu tôi có một chỉ số 2 cột, nhưng những gì sẽ xảy ra nếu chỉ số của tôi là trên 3 hoặc 4 cột?
Vì vậy, tôi đoán SELECT * FROM table WHERE last_name = "doe" AND first_name = "john" sẽ không? Nếu trường hợp đó xảy ra, vì tất cả các tòa nhà truy vấn bị ẩn bởi ORM của tôi, tôi có thể phải xác định 2 chỉ số ... thực sự hút, vì tôi có chỉ mục trên 3 cột để xác định ... –
Không, bạn đã hiểu lầm. WHERE 'last_name' =" doe "AND' first_name' = "john" truy vấn sẽ sử dụng chỉ số ('first_name',' last_name') hoặc ('last_name',' first_name') chỉ tốt. – ChssPly76
Một câu hỏi: đối với một truy vấn có 2 điều kiện VÀ, nó có quan trọng, tốc độ khôn ngoan, nó chỉ số là "đảo ngược" so với các điều kiện trong truy vấn, hay không? Hoặc nó phụ thuộc vào cardinality của những cột? – Mihai