2008-08-04 36 views
47

Hy vọng rằng, tôi có thể nhận được câu trả lời cho mỗi máy chủ cơ sở dữ liệu.Làm cách nào để lập chỉ mục cột cơ sở dữ liệu

Đối với một phác thảo công trình indexing cách kiểm tra: How does database indexing work?

+0

Điều này có vẻ giống như một câu hỏi mà các tài liệu sẽ được trả lời tốt cho máy chủ cơ sở dữ liệu mà bạn có thể đang sử dụng. Đối với Oracle: [http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/indexes003.htm](Oracle) –

+0

Tôi đã không nhận được trang chính xác khi tôi nhấp vào liên kết ở trên cho Oracle . Đăng liên kết chính xác: http://docs.oracle.com/cd/B28359_01/server.111/b28310/indexes003.htm –

+4

Một trong những mục tiêu được nêu của SO là hiển thị đầu tiên trong tìm kiếm trên google. Thông thường, một câu trả lời SO tốt hơn bản thân các tài liệu. Nó sẽ không có giá trị để thiết lập một câu trả lời ở đây như là một wiki cộng đồng để đối chiếu tất cả các câu trả lời? –

Trả lời

53

Sau đây là tiêu chuẩn SQL92 rất cần được hỗ trợ bởi hầu hết các RDMBS sử dụng SQL:

CREATE INDEX [index name] ON [table name] ([column name]) 
+2

Trong hầu hết các hệ thống, điều này cũng có thể được sử dụng để có nhiều cột, chỉ bằng cách thêm danh sách các tên cột được tách nhau bằng dấu phẩy thay vì cột đơn. –

6

Sql Server 2005 mang đến cho bạn khả năng chỉ định một chỉ mục bao gồm. Đây là một chỉ mục bao gồm dữ liệu từ các cột khác ở cấp độ lá, do đó bạn không phải quay lại bảng để lấy các cột không được bao gồm trong các khóa chỉ mục.

tạo chỉ mục không được chỉ định my_idx trên my_table (my_col1 asc, my_col2 asc) bao gồm (my_col3);

Điều này là vô giá đối với truy vấn có my_col3 trong danh sách lựa chọn và my_col1 và my_col2 trong mệnh đề where.

4

Đối pytables python, chỉ số không có tên và họ đang bị ràng buộc vào các cột duy nhất:

tables.columns.column_name.createIndex() 
4

Trong SQL Server, bạn có thể làm như sau: (. MSDN Link vào danh sách đầy đủ các tùy chọn)

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name 
    ON <object> (column [ ASC | DESC ] [ ,...n ]) 
    [ INCLUDE (column_name [ ,...n ]) ] 
    [ WHERE <filter_predicate> ] 

(bỏ qua một số tùy chọn nâng cao hơn ...)

tên của mỗi Index phải cơ sở dữ liệu độc đáo rộng.

Tất cả chỉ mục có thể có nhiều cột và mỗi cột có thể được sắp xếp theo bất kỳ thứ tự nào bạn muốn.

Chỉ mục được nhóm là duy nhất - mỗi chỉ mục một bảng. Họ không thể có các cột INCLUDE d.

Chỉ mục không được quản lý không phải là duy nhất và có thể có tối đa 999 mỗi bảng. Chúng có thể bao gồm các cột và các mệnh đề.

2

Để tạo chỉ số sau công cụ có thể được sử dụng:

  1. Tạo một chỉ mục trên một bảng. giá trị nhân bản được phép:

    CREATE INDEX INDEX_NAME ON tên_bảng (tên_cột)

  2. Tạo một chỉ số duy nhất trên một bảng.giá trị nhân bản không được phép:

    CREATE INDEX UNIQUE INDEX_NAME ON tên_bảng (tên_cột)

  3. Index Clustered

    CREATE INDEX Clustered CL_ID ON SALES (ID);

  4. Non-clustered index

    CREATE INDEX nonclustered NONCI_PC ON SALES (ProductCode);

tham khảo http://www.codeproject.com/Articles/190263/Indexes-in-MS-SQL-Server để biết chi tiết.

1

1.

CREATE INDEX name_index ON Employee (Employee_Name) 
  1. Trên một cột đa

    CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age) 
    
0

Bạn chỉ nên chỉ số cột mà bạn thực hiện tìm kiếm thường xuyên/truy vấn.

Giả sử bạn có bảng có tên Sinh viên nơi bạn lưu trữ StudentID, Tên, Khóa học, Lớp vv Và bạn cần phải thường xuyên tìm kiếm cột StudentID để biết thông tin về các sinh viên cụ thể.

SELECT Name, Course, Grade 

FROM Students 

WHERE StudentID = 111025 

Bạn nên tạo chỉ mục trên cột đó, vì nó sẽ tăng tốc quá trình tìm kiếm. Bạn có thể tạo chỉ mục trên một cột hiện tại với mã sau:

CREATE INDEX IndexStudentID 

ON Students (StudentID) 

Tên IndexStudentID có thể là bất cứ điều gì, chọn điều gì đó có ý nghĩa với bạn.

Tuy nhiên, việc tạo chỉ mục sẽ thêm một số phí vào cơ sở dữ liệu của bạn. Có rất nhiều công cụ có thể giúp, ví dụ, tôi đang sử dụng SQLDbm vì tôi phù hợp với tôi nhất.

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