Interview Notes

  • Home
  • Blog
    • Ntech Developers
    • Fanpage
    • Group
    • Github
  • Interview Notes
  • Social
    • Facebook
    • Twitter
    • Linkedin
  • About
  • Contact me

 Index database là gì?

Index là một cấu trúc dữ liệu được dùng để định vị và truy cập nhanh nhất vào dữ liệu trong các bảng database
Index là một cách tối ưu hiệu suất truy vấn database bằng việc giảm lượng truy cập vào bộ nhớ khi thực hiện truy vấn

Index có thể được tạo cho một hoặc nhiều cột trong database. Index thường được tạo mặc định cho primary key, foreign key.
Ngoài ra, ta cũng có thể tạo thêm index cho các cột nếu cần.

Cụ thể:
- Single-Column Index trong SQL
Chỉ mục cho một cột đơn là một chỉ mục được tạo dựa trên chỉ một cột trong bảng.

CREATE INDEX ten_chi_muc ON ten_bang (ten_cot);

- Unique index trong SQL
Unique index được sử dụng không chỉ để tăng hiệu suất, mà còn cho mục đích toàn vẹn dữ liệu.
Một Unique index không cho phép bất kỳ bản sao giá trị nào được chèn vào trong bảng.

CREATE UNIQUE INDEX ten_chi_muc ON ten_bang (ten_cot);

- Composite Index trong SQL
Composite Index là một chỉ mục cho hai hoặc nhiều cột trong một bảng.

CREATE INDEX ten_chi_muc ON ten_bang (cot1, cot2);

Implicit Index trong SQL
Implicit Index (có thể hiểu là chỉ mục ngầm định) là chỉ mục mà được tạo tự động bởi Database Server khi một đối tượng được tạo.
Các chỉ mục được tạo tự động cho các ràng buộc Primary key và các ràng buộc Unique.


Hai dạng Index Database:
- B-Tree: Dữ liệu index trong B-Tree được tổ chức và lưu trữ theo dạng tree, tức là có root, branch, leaf.
- Hash Index: Dữ liệu index được tổ chức theo dạng Key - Value được liên kết với nhau.

Hai loại Index phổ biến (2 loại này đều thuộc B-Tree):
- Clustered index
Một clustered index (chỉ mục được phân cụm) là một loại tệp sắp xếp thông tin trong bảng về đặc tính của chúng. Chỉ có 1 danh sách cho mỗi bảng trong database. Do đó, chỉ có 1 bản ghi nhóm đơn cho mỗi bảng.
Dưới đây là một vài đặc điểm của clustered index:
+ Lưu trữ data mặc định và lưu trữ data được sắp xếp
+ Giúp lưu trữ data và index cùng một lúc
+ Quét Clustered index và tìm kiếm inde
+ Tra cứu khóa

Ưu điểm:
+ Các clustered index là một option lý tưởng cho range hoặc group nhận được các truy vấn loại tối thiểu, tối đa hoặc đếm (count type queries).
+ Bất kỳ tìm kiếm có liên quan nào sẽ đi thẳng đến một điểm cụ thể trong thông tin với mục tiêu có thể tiếp tục đọc liên tục từ bảng.
+ Sử dụng cơ chế định vị để tìm phần tập tin ở đầu range.
+ Một kỹ thuật hay để các tìm kiếm range khi hunt key được đề cập.
+ Giảm thiểu chuyển trang và tối đa hóa các lần truy cập bộ đệm.

Nhược điểm:
+ Hạn chế di chuyển trang và tăng các tìm kiếm dự trữ.
+ Các phương pháp khác nhau cho yêu cầu không liên tiếp
+ Khiến cho nhiều phần trang nhất quán bao gồm trang thông tin giống như trang danh sách liệt kê.
+ Công việc bổ sung để chèn, cập nhật và xóa trong SQL.
+ Cần nỗ lực lâu hơn để làm mới các hồ sơ.
+ Hầu như tất cả data được chứa trong các nút dẫn của chỉ mục.

- Non-Clusterd Index
Một non-clustered index (chỉ mục không được phân cụm) lưu trữ thông tin meta trong một khu vực, đồng thời lưu trữ các tệp trong khu vực khác. Các tập tin bao gồm các con trỏ đến vị trí của thông tin đó.
Một solitary table (bảng đơn) có thể có nhiều non-bunched records (bản ghi không được nhóm) dưới dạng tệp.
Một non-clustered index được xác định trong trường không theo thứ tự của bảng và loại phương thức này cải thiện hiệu năng của các truy vấn khi chúng sử dụng các khóa không được gán làm khóa chính.
Dưới đây là một vài đặc điểm của clustered index:
+ Chỉ lưu trữ các key values
+ Con trỏ tới các hàng Chỉ mục Heap/Clustered
+ Cho phép truy cập data thứ cấp
+ Kết nối data
+ Hoạt động của Index Scan và Index Seek
+ Tạo một non-clustered index gồm cho bảng hoặc dạng view

Ưu điểm:
+ Giúp lấy dữ liệu nhanh chóng từ bảng database.
+ Giảm chi phí hơn so với clustered index.
+ Có thể được sử dụng để tạo nhiều hơn một chỉ mục vì có nhiều chỉ mục không được nhóm trong RDBMS.

Nhược điểm:
+ Lưu trữ dữ liệu theo thứ tự hợp lý nhất mà không cho phép người dùng tự sắp xếp các hàng data.
+ Quá trình tra cứu trên non-clusterd index khá tốn kém.
+ Cần có bản cập nhật tương ứng mỗi khi clustering key (khoá phân cụm) được cập nhật để lưu nó vào non-clustered index.

 Primary key của bảng nếu nó xác định duy nhất từng bộ (hàng) trong bảng đó. Nó thực thi các ràng buộc toàn vẹn đối với bảng.

Unique key cũng xác định duy nhất một bộ giá trị riêng lẻ trong một mối quan hệ.

So sánh Primary key và Unique key
Primary key
- Nó được sử dụng để làm định danh duy nhất cho mỗi hàng trong bảng.
- Nó không chấp nhận giá trị NULL
- Chỉ có duy nhất 1 primary key trong 1 bảng
- Tạo chỉ mục theo nhóm

Unique key
- Nó cũng xác định duy nhất một hàng, nhưng không là khóa chính.
- Nó chấp nhận giá trị NULL
- Có thể nhiều hơn 1 unique key  trong 1 bảng
- Tạo chỉ mục không phân cụm

Bài đăng cũ hơn Trang chủ

ABOUT AUTHOR

NTechDevelopers

Follow us

New technology for developers

POPULAR POSTS

  • Interview notes: Senior Dot Net (Ver 08/2022)
    Khi nào dùng store khi nào dùng function? Phân biệt 2 loại Index? Phân biêt truncate table và delete table? Phân biệt net framework và net c...
  • Interview notes: Senior Dot Net (Ver 05/2022)
     - Giới thiệu về bản thân - Nói sơ lược về công nghệ của dự án gần nhất? - So sánh Net Framwork và Net Core? - Net core 3.1 có gì khác biệt ...
  • Interview notes: Junior DotNet (Ver 10/2019)
      1. Bài test: 30 phút Gồm 4 phần: OOP Data structure Database Design pattern 1.1 – Câu hỏi trắc nghiệm liên quan đến 4 thuộc tính 5 câu – C...

Categories

  • Concurrency
  • Database
  • Design Patterns
  • DotNet
  • Entity Framework
  • Frontend
  • Interview notes
  • OOP
  • Principles
  • Subversion Control
  • Unit test

Advertisement

Website đang trong quá trình cập nhập. Hi vọng các bạn ủng hộ!

About Me

NTechDevelopers is a community of Software development joined together with certain common goals: to learn, to teach and to have fun programming. I hope that you find NTechDevelopers to be a wealth of information and a valuable resource.

Popular Posts

  • Interview notes: Senior Dot Net (Ver 08/2022)
    Khi nào dùng store khi nào dùng function? Phân biệt 2 loại Index? Phân biêt truncate table và delete table? Phân biệt net framework và net c...

Advertisement

Copyright © 2022 Interview Notes. Created by NtechDevelopers