2013-02-09 27 views
30

Tôi đang đọc một cuốn sách về Django Coding Style và một trong số họ thảo luận ở đây là db_index = True. Kể từ khi sử dụng Django, tôi không bao giờ sử dụng chức năng này bởi vì tôi không biết chức năng này có thể làm gì.Thêm chỉ mục (db_index = True)

Đây là câu hỏi của tôi, khi cân nhắc việc thêm chỉ mục?

Trả lời

73

Điều này không thực sự là django cụ thể; nhiều hơn để làm với cơ sở dữ liệu. Bạn thêm các chỉ mục trên các cột khi bạn muốn tăng tốc các tìm kiếm trên cột đó.

Thông thường, chỉ khóa chính được cơ sở dữ liệu lập chỉ mục. Điều này có nghĩa là tra cứu bằng cách sử dụng khóa chính được tối ưu hóa.

Nếu bạn thực hiện nhiều tra cứu trên cột phụ, hãy xem xét thêm chỉ mục vào cột đó để tăng tốc độ.

Xin lưu ý, giống như hầu hết các vấn đề về quy mô, các quy tắc này chỉ áp dụng nếu bạn có số lượng lớn hàng thống kê (10.000 không lớn).

Ngoài ra, mỗi khi bạn thực hiện chèn, chỉ mục cần được cập nhật. Vì vậy, hãy cẩn thận về cột nào bạn thêm chỉ mục. Như thường lệ, bạn chỉ có thể tối ưu hóa những gì bạn có thể đo lường - vì vậy hãy sử dụng câu lệnh EXPLAIN và nhật ký cơ sở dữ liệu của bạn (đặc biệt là bất kỳ nhật ký truy vấn chậm nào) để tìm hiểu các chỉ mục có thể hữu ích ở đâu.

+3

điều này có thể giúp (rất nhiều) https://github.com/django-debug-toolbar/django-debug-toolbar#django-debug-toolbar – maazza

+0

Chỉ mục cũng có thể tăng tốc độ sắp xếp. [Bài viết này] (http://sqlmag.com/database-performance-tuning/indexing-sort-performance) là về MS SQL Server nhưng cũng vậy với bất kỳ cơ sở dữ liệu nào. – Nick

Các vấn đề liên quan