2011-01-05 87 views
11

tôi đã thực hiện một cái gì đó như thế này để sử dụng on duplicate key update:Ý nghĩa của tên chỉ mục khi tạo chỉ mục trong MySQL là gì?

CREATE UNIQUE INDEX blah on mytable(my_col_to_make_an_index); 

và làm việc của mình tốt. Tôi không chắc mục đích của tên chỉ mục là gì - trong trường hợp này là 'blah'. Những thứ tôi đã đọc nói để sử dụng nhưng tôi không hiểu tại sao. Nó dường như không được sử dụng trong các truy vấn, mặc dù tôi có thể thấy nó nếu tôi xuất lược đồ.

Vậy ... tên chỉ mục nào phục vụ? Nếu nó giúp đường dây trong số CREATE TABLE kết thúc như sau:

UNIQUE KEY `clothID` (`clothID`) 

Trả lời

11

Tên chỉ mục được sử dụng để tham chiếu chỉ mục cho các lệnh trong tương lai. Giống như chỉ mục thả.

http://dev.mysql.com/doc/refman/5.0/en/drop-index.html

Chỉ cần nghĩ tên chỉ mục như tên bảng. Bạn có thể dễ dàng tạo ra một bảng gọi là 'blah'.

CREATE TABLE blah (f1 int); 

Nhưng 'blah' không hữu ích cho việc tham khảo sau này. Chỉ cần nhất quán. cái gì đó như

CREATE UNIQUE INDEX field_uniq on mytable(field); 

hoặc

CREATE INDEX field1_field2_inx on mytable(field1, field2); 
+0

Tôi có thể tạo các chỉ mục có cùng tên trên các bảng khác nhau không? –

+1

@FrozenFlame Bạn có thể sử dụng MySQL, nhưng không có trong nhiều cơ sở dữ liệu khác, như PostgreSQL. – ostrokach

1

Bạn là chính xác. Tên chỉ mục chỉ được sử dụng làm số nhận dạng, vì vậy bạn có thể tham khảo nó nếu bạn cần chỉnh sửa, xóa hoặc truy vấn nó sau này. Nó không được sử dụng cho bất kỳ mục đích nào khác.

Bạn có thể đặt tên chỉ mục là thuận tiện nhất cho bạn, nhưng một số tính nhất quán có thể giúp bạn (đặt tên cho chỉ mục 'blah' của bạn là hoàn toàn hợp lệ, nhưng bạn sẽ không có đầu mối hoặc tại sao bạn tạo ra nó).

8

Việc đặt tên là cho phép không gian tên chung và giúp hiểu rõ hơn về giản đồ bảng.

Tên chỉ mục rất hữu ích cho forcing index hint. Hãy thử không sử dụng cùng tên cho cả chỉ mục và cột (mơ hồ) và trường hợp lạc đà là vô nghĩa đối với hệ thống như Windows (không cho phép độ nhạy trường hợp).

Ví dụ như thế này:

unique key cloth_id_uniq (cloth_id); 
>>allow people knowing this an unique key on column cloth_id 

fulltext key description_ft (description); 
>>allow people knowing this index is fulltext on column description 

Tôi không nghĩ rằng có một quy ước đặt tên tiêu chuẩn, bất cứ điều gì có vẻ trực quan sẽ giúp nhất.

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