2010-04-08 77 views

Trả lời

18

Chỉ số tăng tốc truy vấn SELECT vì chỉ mục được sắp xếp theo định nghĩa. Ngoài ra một chỉ số UNIQUE thực thi ràng buộc rằng giá trị của cột đó (hoặc kết hợp các giá trị của các cột bị ràng buộc) chỉ tồn tại một lần (tương tự áp dụng cho CHÍNH, nhưng PRIMARY chỉ có thể tồn tại một lần cho mỗi bảng trái ngược với khóa UNIQUE).

Chỉ mục là sự cân bằng: chúng tăng tốc độ truy vấn SELECT (khi cột được sử dụng có INDEX) nhưng chúng làm cho bảng MySQL tiêu thụ nhiều không gian hơn và tốn nhiều thời gian hơn khi thay đổi bảng thông qua INSERT/UPDATE/DELETE.

+15

thêm vào bài đăng ở trên, chỉ mục giống như chỉ mục của sách. Hãy tưởng tượng bạn đã có một cuốn sách công thức, và bạn muốn tìm hiểu làm thế nào để làm một món trứng tráng, bạn chỉ đơn giản là bỏ qua phía sau, tìm từ và số trang của nó, và bỏ qua đến số trang đó. Bây giờ hãy tưởng tượng bạn không có chỉ mục và phải tìm kiếm thông qua 400 trang của công thức nấu ăn, những gì một cơn ác mộng! – studioromeo

+0

Xin chúc mừng @Rob vì là người duy nhất ở đây để thực sự nói những gì một chỉ số là trong thuật ngữ laymans. – CResults

+1

fulltext là một chỉ số đặc biệt được sử dụng bởi công cụ lưu trữ MyISAM của mysql chỉ, nó được sử dụng để tìm kiếm hồ sơ của bạn bằng cách sử dụng cụm từ của con người. mà không đi vào chi tiết quá nhiều công cụ tìm kiếm riêng của mysqls, một phiên bản nâng cao hơn của lệnh sql giống như vậy. – studioromeo

0

Chỉ số tăng tốc truy vấn chọn lọc. Chúng tạo ra sự khác biệt giữa cơ sở dữ liệu phải kiểm tra từng hàng trong bảng để có kết quả và biết chính xác nơi cần tìm thông tin. Đó là loại khái niệm tương tự như looping thông qua một cấu trúc dữ liệu kiểu từ điển để tìm thấy những gì bạn đang tìm kiếm thay vì chỉ tìm giá trị bạn muốn bởi nó là chìa khóa (index). Các chỉ số sẽ làm chậm Chèn, cập nhật và xóa mặc dù nếu bạn có quá nhiều vì mọi thay đổi của bảng giờ đây sẽ phải tạo các chỉ mục.

Một chiến lược phổ biến trong các ứng dụng hiệu suất/khối lượng rất cao là có hai cơ sở dữ liệu. Một trong số đó được lập chỉ mục tối ưu cho các lần truy xuất nhanh và một số khác có rất ít chỉ mục để chèn nhanh. Vấn đề duy nhất với điều này là, bạn mất dữ liệu thời gian thực khi cơ sở dữ liệu truy xuất chưa được đồng bộ hóa với cơ sở dữ liệu chèn.

Ngoài ra còn có hai loại chỉ mục khác nhau. Chỉ mục được nhóm và không được nhóm. Nếu tôi không nhầm, trong các khóa chính của MySQL được nhóm lại và tất cả các chỉ mục khác không được nhóm lại. Một bài giới thiệu tốt về sự khác biệt là here. Nó bao gồm SQL Server, nhưng khái niệm nên giống nhau.

Tôi chưa từng làm việc nhiều với MySQL nhưng từ những gì tôi có thể xem trực tuyến, FULLTEXT cung cấp cách tìm kiếm bằng cách sử dụng tìm kiếm văn bản đầy đủ Ngôn ngữ tự nhiên. Về cơ bản, trong truy vấn, bạn sẽ cung cấp các điều kiện để tìm kiếm toàn bộ cột được lập chỉ mục văn bản và nó sẽ rút lại tất cả các kết quả. Dưới đây là một vài bài viết tôi tìm thấy về chủ đề bạn có thể thấy hữu ích.
MySQL Docs on Full Text Search
Article 1
Article 2

5

chỉ số được sử dụng cho hai điều:

  1. Xác định một lĩnh vực (hoặc lĩnh vực) xác định duy nhất một dòng (khóa chính).
  2. Tiết kiệm thời gian khi tra cứu trên các trường thường được sử dụng. Ví dụ: nếu bạn thường tra cứu người dùng theo tên người dùng của họ, bạn nên thêm chỉ mục vào cột tên người dùng.

Đọc thêm về chỉ mục tại đây http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html hoặc mua sách phù hợp hơn về thiết kế cơ sở dữ liệu.

Về câu hỏi thứ hai của bạn, hãy xem số http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html này.

Sự khác biệt chính là TEXT được lưu trữ bên ngoài vùng bảng và được tham chiếu từ bảng, trong khi VARCHAR được lưu trữ dưới dạng trường bình thường. Hiệu suất trong trường hợp này chỉ phụ thuộc vào các mẫu sử dụng của bạn. TEXT cũng có thể cho phép tìm kiếm toàn văn bản.

Ngoài ra, bạn không thể sử dụng chỉ mục trên TEXT vì các lý do đã nêu ở trên, vì vậy, không nên sử dụng nó làm trường tra cứu.

0

Chỉ mục là cấu trúc dữ liệu được sử dụng để tối ưu hóa truy vấn. Chúng rất giống với chỉ mục ở mặt sau của một cuốn sách. Chúng tốn một chút không gian và thời gian để duy trì, giống như chỉ mục sách sẽ phải được làm lại nếu bạn quyết định thêm một chương mới. Nhưng chúng thường tăng tốc các truy vấn rất nhiều (lên đến hàng ngàn hoặc thậm chí hàng triệu lần nhanh hơn không).

1

Bạn cần một khóa chính cho mỗi bảng cơ sở dữ liệu và tôi nghĩ đó cũng là chỉ mục chính. Các chỉ mục được sử dụng để tăng tốc các truy vấn và bạn nên có chỉ mục của cột nếu bạn đã sử dụng nó trong một truy vấn SQL-WHERE của các truy vấn SQL vì lý do hiệu suất.

Sử dụng TEXT trong trường hợp bạn không cần nó là xấu. Tốt hơn là giới hạn người dùng của bạn cho một số trường tức là tiêu đềurl, vì bạn có chỉ mục trên url. Và tôi không nghĩ bạn có thể sử dụng chỉ mục trên các cột thuộc loại TEXT. Tôi không nghĩ rằng một FULLTEXT -index trên url là những gì bạn muốn.

Tôi khuyên bạn nên đọc về cơ sở dữ liệu trong văn bản giới thiệu hoặc trang web.

0

Nếu bạn biết rằng mọi người đều có số an sinh xã hội (SSN) duy nhất, thì bạn có thể tạo chỉ mục tên của mọi người, được sắp xếp theo SSN. Sau đó, nếu bạn được cung cấp SSN của một ai đó, nó sẽ thực sự nhanh chóng tìm thấy tên của họ.

Giả sử bạn có một thư mục manilla cho mỗi người. Thẻ có thể có hồ sơ y tế chi tiết vv Cơ sở dữ liệu của bạn có thể không giữ các thẻ này theo thứ tự - có thể nó chỉ thêm các thư mục mới vào cuối compactus. Nhưng nó giữ một "chỉ mục" được sắp xếp sao cho nếu bạn tìm kiếm một SSN, nó có thể cho bạn biết chính xác vị trí của thư mục liên quan.

Trong ví dụ này, SSN đang được sử dụng làm Khóa chính. Thật tuyệt nếu nó là duy nhất, nhưng ngay cả khi nó không phải là duy nhất, nó vẫn có thể tăng tốc độ.

16

Chỉ mục giống như chỉ mục của một cuốn sách. Hãy tưởng tượng bạn đã có một cuốn sách công thức, và bạn muốn tìm hiểu làm thế nào để làm một món trứng tráng, bạn chỉ đơn giản là bỏ qua phía sau, tìm từ và số trang của nó, và bỏ qua đến số trang đó. Bây giờ hãy tưởng tượng bạn không có chỉ mục và phải tìm kiếm thông qua 400 trang của công thức nấu ăn, những gì một cơn ác mộng!

chỉ số có một số loại Primary Key, Index, độc đáo, Fulltext

Primary Key được coi là chỉ số chính của bạn, nơi mysql đầu tiên đi tìm một kỷ lục. Hầu hết mọi người sử dụng trường số nguyên tăng dần tự động cho trường này vì nó thường là duy nhất trên mỗi hàng.

Chỉ mục được coi là khóa chính thứ cấp, bạn đặt các trường này trên các trường mà bạn muốn có thể tìm kiếm nhanh chóng.

Phím duy nhất tương tự như chỉ mục tuy nhiên chúng hoạt động bằng cách đảm bảo rằng bạn không thể đặt các bản sao trong cột đó, ví dụ: bạn không thể có từ 'trứng' xuất hiện trong cùng một cột trên hai hàng khác nhau.

Cuối cùng Fulltext là một chỉ mục đặc biệt được sử dụng bởi công cụ lưu trữ MyISAM của mysql, nó được sử dụng để tìm kiếm hồ sơ của bạn bằng cách sử dụng cụm từ của con người. mà không đi vào chi tiết quá nhiều công cụ tìm kiếm riêng của mysqls, một phiên bản nâng cao hơn của lệnh LIKE sql.

Ví dụ: nếu tôi tìm kiếm 'trứng và bơ', toàn văn sẽ tìm kiếm các bản ghi chứa trứng, bơ hoặc cả hai.nơi như LIKE chỉ đơn giản là sẽ tìm kiếm các chuỗi có chứa 'trứng và bơ'

Tôi hy vọng điều này sẽ giúp, mysql site có nhiều thông tin về chủ đề, nhưng điều này mang lại cho bạn ý chính của nó.

Viết mã hạnh phúc :)

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