TUYỂN DỤNG

[Database] Index là gi?


Phát biểu(statement) Index cho phép các ứng dụng tìm kiếm dữ liệu của bảng trên database một cách nhanh chóng mà không cần phải đọc toàn bộ bảng.

Trong thực thế bạn có để hiểu Index như tên gọi của nó là mục lục của một quyên sách hay một quyển từ điển.

Giả dụ trường hợp 1: bạn có một quyển từ điển mà trong đó không hề có bảng mục lục và các từ không được sắp xếp theo một quy luật nhất định, vậy bạn mất bao lâu để tìm được 1 từ cần tìm(cái này hên xui à .:0_0:. xui nhiều hơn hên là chắc luôn.).

Giả dụ trường hợp 2: nếu bạn có một quyển từ điển có mục lục các chữ cái A, B, C, D... và các từ trong từ điển được sắp xếp theo một quy luật nhất định như là A - AB - AC ... B - BA - BC thì bạn thật dễ dàn kiếm được từ mình cần.

Và tất nhiên trường hợp 2 khẳng định là cách tìm kiếm nhanh chóng và hiệu quả hơn rất nhiều so với trường hợp 1.

Tương tự trong cơ sở dữ liệu, ta hiểu Index trong SQL cũng giống như mục lục của những quyển sách, giúp SQL Server tìm kiếm và xác định chính xác nơi dữ liệu được lưu trữ.

Lợi ích của Index:
  • Là 1 trong những cách tốt nhất để giảm hoạt động của đĩa cứng (disk I/O)  và logical reads
  • Cho phép SQL Server tìm thấy dữ liệu mà không cần phải quét toàn bộ Table
Nhược điểm của việc sử dụng Index:
  • Việc tạo Index đôi khi rất tốn thời gian. Đối với project CSDL nhỏ, vừa thì ko đáng kể nhưng với CSDL lớn thì việc này là cực kì lâu.
  • Do index là tạo 1 cấu trúc bảng –> dẫn đến tốn tài nguyên, hiểu đơn giản nếu bỏ đi phần mục lục của quyển từ điển thì ta sẽ giảm được mấy chục trang in và quyên sách sẽ ít trang hơn.
  • Nếu có sự thay đổi về dữ liệu thì index cũng được update theo.
Tuy rằng cũng có nhiều nhược điểm, nhưng chắc chắn hầu hết các lập trình viên, quản trị database đều ưu tiên sử dụng Index.

Các loại Index: 
Index hiện đang có 2 dạng là Clustered Index và Non-Clustered Index
◄Clustered Index►
  • Thường được tự tạo ra khi bảng có primary key do primary key đã duy trì tính duy nhất dữ liệu của cột, nên có thể nói clustered index chính là unique index.
  • Trong clustered index, các dữ liệu ở cấu trúc bảng trong được sắp xếp một cách vật lý, tức là trong clustered index dữ liệu của bảng được sắp xếp đúng theo thư mục cây dựa vào bảng chữ cái.
  • Cách làm việc của index là dựa trên ROOT PAGE, khi cần truy xuất, hệ thống sẽ tìm đến địa chỉ cần tìm trong bảng SYSINDEXES.(về hai từ chuyên nôn bạn tìm hiểu thêm trên mạng nhé.)
  • Trong một bảng chỉ được có duy nhất một clustered index.
    ◄Non-Clustered Index►
    • Thường được sửa dụng khi bảng có foreign key. Vì vậy non-clustered index mặc định không đẩy mạnh tính duy nhất dữ liệu.
    • Trên cơ bản nó khác với clustered Index, non-Clustered Index không sắp xếp dữ liệu theo một trật tự vật lý như clustered mà là "ngẫu nhiên" trong bảng dữ liệu, miễn sao nó nằm trong một logic do index qui định. 
    • Cách hoạt động thì tương tự clustered index, có khác là khi truy xuất đến bảng thông tin cuối, thì thông tin không được sắp xếp theo trật tự thôi ví dụ như A → C → B → E → D → ...
    • Hiện nay đối với SQL Server 2008 trong một bảng có thể chứa được 999 non-clustered index, các version trước đó chỉ được 249 index(Non-Clustered Index).
      Đây là cách hiểu của Sơn về index có thể chưa được hoàn chỉnh lắm, nếu bạn có đóng góp nào khác thì phản hồi bên dưới nhé.



      COMMENTS

      Name

      Anime,1,Application,6,Articles,6,Audio,2,Database,4,ElasticSearch,1,FFmpeg,1,Java,6,JavaScript,1,Links,2,Model,3,MS-SQL,3,Notepad++,1,Pictures,4,Programming,7,Projects,3,SPS,3,SQL,4,System,1,Truyện,2,Windows 10,1,YouTube,1,
      ltr
      item
      Bùi Ngọc Sơn: [Database] Index là gi?
      [Database] Index là gi?
      https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd0QIA3uzxIKKt0YhUQz-8jCUTByhyjBzyszWseAXiAEqbhmTgHQUCIrTinFU2PrGVBHDNESEXzZclqHJK39gwJTthRXEyO_OJPBTjpm0Ksdx-HZJezn-yk37wysNIVNQYVmC0S8UUJ3o/s1600/Screen-Shot-2012-11-12-at-10.52.15-PM-545x248.png
      https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd0QIA3uzxIKKt0YhUQz-8jCUTByhyjBzyszWseAXiAEqbhmTgHQUCIrTinFU2PrGVBHDNESEXzZclqHJK39gwJTthRXEyO_OJPBTjpm0Ksdx-HZJezn-yk37wysNIVNQYVmC0S8UUJ3o/s72-c/Screen-Shot-2012-11-12-at-10.52.15-PM-545x248.png
      Bùi Ngọc Sơn
      https://bnson1986.blogspot.com/2020/01/index-la-gi.html
      https://bnson1986.blogspot.com/
      http://bnson1986.blogspot.com/
      http://bnson1986.blogspot.com/2020/01/index-la-gi.html
      true
      7468510552861380973
      UTF-8
      Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content