2010-06-02 46 views

Trả lời

224

Chỉ mục được sử dụng để tăng tốc độ tìm kiếm trong cơ sở dữ liệu. MySQL có một số tài liệu tốt về đề tài này (đó là phù hợp cho các máy chủ SQL khác nữa): http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

Một chỉ số có thể được sử dụng để tìm một cách hiệu quả tất cả các hàng phù hợp với một số cột trong truy vấn của bạn và sau đó đi bộ qua duy nhất mà tập hợp con của bảng để tìm các kết quả khớp chính xác. Nếu bạn không có chỉ mục trên bất kỳ cột nào trong mệnh đề WHERE, máy chủ SQL phải đi qua toàn bộ toàn bộ bảng và kiểm tra mọi hàng để xem nó có phù hợp không, có thể hoạt động chậm trên các bảng lớn.

Chỉ mục cũng có thể là chỉ mục UNIQUE, có nghĩa là bạn không thể có giá trị trùng lặp trong cột đó hoặc PRIMARY KEY trong một số công cụ lưu trữ xác định vị trí trong tệp cơ sở dữ liệu giá trị được lưu trữ.

Trong MySQL, bạn có thể sử dụng EXPLAIN trước câu lệnh SELECT để xem truy vấn của bạn có sử dụng bất kỳ chỉ mục nào không. Đây là một khởi đầu tốt để khắc phục sự cố về hiệu suất. Đọc thêm tại đây: http://dev.mysql.com/doc/refman/5.0/en/explain.html

68

Chỉ mục được sử dụng để tăng tốc hiệu suất truy vấn. Nó thực hiện điều này bằng cách giảm số lượng các trang dữ liệu cơ sở dữ liệu phải được truy cập/quét.

Trong SQL Server, chỉ mục được nhóm xác định thứ tự dữ liệu vật lý trong bảng. Chỉ có thể có một chỉ số nhóm trên mỗi bảng (chỉ số nhóm IS là bảng). Tất cả các chỉ mục khác trên một bảng được gọi là không được nhóm.

3

An index được sử dụng vì nhiều lý do khác nhau. Lý do chính là tăng tốc truy vấn để bạn có thể nhận hàng hoặc sắp xếp hàng nhanh hơn. Một lý do khác là xác định một khóa chính hoặc chỉ mục duy nhất sẽ đảm bảo rằng không có cột nào khác có cùng giá trị.

3

Nếu bạn đang sử dụng SQL Server, một trong những tài nguyên tốt nhất là Sách trực tuyến đi kèm với bản cài đặt! Đó là nơi đầu tiên tôi sẽ đề cập đến cho bất kỳ chủ đề liên quan đến SQL Server.

Nếu thực tế "tôi nên làm điều này như thế nào?" loại câu hỏi, sau đó StackOverflow sẽ là một nơi tốt hơn để hỏi.

Ngoài ra, tôi đã không trở lại trong một thời gian nhưng sqlservercentral.com từng là một trong những trang web có liên quan đến SQL Server hàng đầu trên mạng.

14

Cũng trong chỉ mục chung là B-tree. Có hai loại chỉ mục: được nhóm và không được phân bổ.

Cụm chỉ mục chỉ mục tạo thứ tự hàng vật lý (có thể chỉ một và trong nhiều trường hợp nó cũng là khóa chính - nếu bạn tạo khóa chính trên bảng bạn tạo chỉ mục nhóm trên bảng này).

Nonclustered chỉ mục cũng là cây nhị phân nhưng nó không tạo thứ tự vật lý của các hàng. Vì vậy, các nút lá của chỉ số nonclustered chứa PK (nếu nó tồn tại) hoặc chỉ mục hàng.

Chỉ mục được sử dụng để tăng tốc độ tìm kiếm. Bởi vì độ phức tạp của O (log N). Các chỉ mục là chủ đề rất lớn và thú vị. Tôi có thể nói rằng việc tạo các chỉ mục trên cơ sở dữ liệu lớn là một số loại nghệ thuật đôi khi.

+5

nói chung, cây b chứ không phải là cây nhị phân. –

104

Chỉ mục được nhóm giống như nội dung của sổ điện thoại. Bạn có thể mở cuốn sách tại 'Hilditch, David' và tìm tất cả thông tin cho tất cả các 'Hilditch ngay bên cạnh nhau. Ở đây các phím cho chỉ số nhóm là (họ, tên).

Điều này làm cho các chỉ mục được nhóm lại tuyệt vời để truy xuất nhiều dữ liệu dựa trên các truy vấn dựa trên phạm vi vì tất cả dữ liệu nằm cạnh nhau.

Vì chỉ mục nhóm thực sự liên quan đến cách dữ liệu được lưu trữ, chỉ có một trong số chúng có thể trên mỗi bảng (mặc dù bạn có thể gian lận để mô phỏng nhiều chỉ mục nhóm).

Chỉ mục không được nhóm lại khác nhau ở chỗ bạn có thể có nhiều chỉ mục và sau đó chỉ vào dữ liệu trong chỉ mục nhóm. Bạn có thể có ví dụ một chỉ mục không được nhóm ở mặt sau của danh bạ điện thoại được bật (thị trấn, địa chỉ)

Hãy tưởng tượng nếu bạn phải tìm kiếm qua danh bạ cho tất cả những người sống ở 'Luân Đôn' - chỉ với cụm chỉ mục bạn sẽ phải tìm kiếm tất cả các mục trong sổ điện thoại vì khóa trên chỉ mục nhóm được bật (họ, tên) và kết quả là những người sống ở London được phân tán ngẫu nhiên trong toàn bộ chỉ mục.

Nếu bạn có chỉ mục không được nhóm trên (thị trấn) thì các truy vấn này có thể được thực hiện nhanh hơn nhiều.

Hy vọng điều đó sẽ hữu ích!

+41

Tôi nghĩ rằng điện thoại tương tự cuốn sách là tuyệt vời cho người mới bắt đầu .. cung cấp đủ họ đủ tuổi để biết những gì một cuốn sách điện thoại! ;) – chrnola

+3

Rất tốt lời giải thích về nhu cầu cho chỉ số không nhóm –

+0

@chrnola bây giờ tôi cảm thấy cũ: ( – Guerrilla

33

Chỉ mục tất cả là tìm dữ liệu nhanh chóng. Các chỉ mục trong cơ sở dữ liệu tương tự với các chỉ mục mà bạn tìm thấy trong một cuốn sách. Nếu một cuốn sách có chỉ mục, và tôi yêu cầu bạn tìm một chương trong cuốn sách đó, bạn có thể nhanh chóng tìm thấy nó với sự trợ giúp của chỉ mục. Mặt khác, nếu sách không có chỉ mục, bạn sẽ phải dành nhiều thời gian hơn, tìm kiếm chương, bằng cách xem từng trang từ đầu đến cuối sách. Trong một thời trang tương tự, các chỉ mục trong cơ sở dữ liệu, có thể giúp truy vấn tìm dữ liệu nhanh chóng. Nếu bạn chưa quen với các chỉ mục, các video sau đây có thể rất hữu ích. Infact, tôi đã học được rất nhiều từ họ.

Index Basics
Clustered and Non-Clustered Indexes
Unique and Non-Unique Indexes
Advantages and disadvantages of indexes

+0

Liên kết đầu tiên chứa ví dụ và nó là tuyệt vời! – user1700890

+0

Đọc tất cả các câu trả lời khiến tôi tự hỏi tại sao không lập chỉ mục tất cả mọi thứ. –

11

INDEXES - để tìm dữ liệu một cách dễ dàng

UNIQUE INDEX - giá trị nhân bản không được phép

Cú pháp cho INDEX

CREATE INDEX INDEX_NAME ON TABLE_NAME(COLUMN); 

Cú pháp cho UNIQUE INDEX

CREATE UNIQUE INDEX INDEX_NAME ON TABLE_NAME(COLUMN); 
8

INDEX là một kỹ thuật tối ưu hóa hiệu suất tăng tốc quá trình phục hồi dữ liệu. Nó là một cấu trúc dữ liệu liên tục được liên kết với một Bảng (hoặc Xem) để tăng hiệu suất trong khi truy xuất dữ liệu từ bảng đó (hoặc Xem).

Tìm kiếm dựa trên chỉ mục được áp dụng đặc biệt hơn khi truy vấn của bạn bao gồm bộ lọc WHERE. Nếu không, nghĩa là truy vấn không có bộ lọc WHERE sẽ chọn toàn bộ dữ liệu và quy trình. Tìm kiếm toàn bộ bảng không có INDEX được gọi là Bảng quét.

Bạn sẽ tìm thấy thông tin chính xác cho Sql-Index theo cách rõ ràng và đáng tin cậy: làm theo những liên kết này:

  1. Để hiểu rõ cocnept-khôn ngoan: http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-INDEX-Overview-and-Optimizations.html
  2. Để hiểu rõ thực hiện khôn ngoan: http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-INDEX-Creation-Deletetion-Optimizations.html
72

Tương tự rất tốt là nghĩ về chỉ mục cơ sở dữ liệu làm chỉ mục trong sách. Nếu bạn có một cuốn sách về các quốc gia và bạn đang tìm kiếm Ấn Độ, thì tại sao bạn sẽ lật qua toàn bộ cuốn sách - tương đương với việc quét toàn bộ bảng trong thuật ngữ cơ sở dữ liệu - khi bạn có thể đi đến chỉ mục ở mặt sau của cuốn sách, sẽ cho bạn biết chính xác các trang nơi bạn có thể tìm thông tin về Ấn Độ. Tương tự, như một chỉ mục sách chứa một số trang, một chỉ mục cơ sở dữ liệu chứa một con trỏ tới hàng chứa giá trị mà bạn đang tìm kiếm trong SQL của bạn.

More Here

+2

ví dụ hoàn hảo, đơn giản và rõ ràng –

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