sách gpt4 ăn đã đi

Tổng hợp các kỹ thuật tối ưu hóa câu lệnh SQL thường dùng [Classic]

In lại Tác giả: qq735679552 Thời gian cập nhật: 27-09-2022 22:32:09 26 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này tổng hợp các kỹ thuật tối ưu hóa câu lệnh SQL phổ biến [cổ điển] được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.

Bài viết này tóm tắt các kỹ thuật tối ưu hóa câu lệnh SQL phổ biến kèm theo các ví dụ. Share cho mọi người tham khảo nhé, chi tiết như sau:

Ngoài việc lập chỉ mục, việc duy trì thói quen viết câu lệnh SQL tốt sẽ làm giảm khả năng xảy ra các vấn đề về hiệu năng SQL.

①Đặt tham số thông qua các biến.

Tốt:

?
1
chuỗisql = "chọn * từ những người p trong đó p.id = ? " ;

xấu:

?
1
chuỗisql = "chọn * từ những người p nơi p.id = " +mã số;

Kế hoạch phân tích cú pháp và thực thi văn bản SQL của cơ sở dữ liệu sẽ được lưu trong bộ đệm, nhưng miễn là văn bản SQL thay đổi thì nó phải được phân tích lại.

Phương thức "...where p.id = "+id yêu cầu phân tích cú pháp lại khi giá trị id thay đổi, việc này sẽ mất thời gian.

②Không sử dụng chọn *.

Tốt:

?
1
chuỗisql = "chọn people_name,pepole_age từ people " ;

xấu:

?
1
chuỗisql = "chọn * từ mọi người" ;

Việc sử dụng select * sẽ tăng thời gian phân tích, đồng thời những dữ liệu không cần thiết cũng sẽ được truy vấn. Việc truyền dữ liệu cũng tốn thời gian.

Ví dụ: các trường loại văn bản thường được sử dụng để lưu trữ những thứ có nội dung phức tạp. Nếu bạn sử dụng select *, trường này cũng sẽ được truy vấn.

③Sử dụng các truy vấn mờ một cách thận trọng.

Tốt:

?
1
chuỗisql = "chọn * từ những người p nơi p.id như 'parm1%' " ;

xấu:

?
1
chuỗisql = "chọn * từ những người p nơi p.id như '%parm1%' " ;

Khi kết quả khớp mờ bắt đầu bằng %, chỉ mục cột sẽ không hợp lệ. Nếu nó không bắt đầu bằng % thì chỉ mục cột sẽ hợp lệ.

④Không sử dụng số cột.

Tốt:

?
1
chuỗisql = "chọn people_name,pepole_age từ danh sách những người được sắp xếp theo tên, tuổi" ;

xấu:

?
1
chuỗisql = "chọn people_name,pepole_age từ những người có thứ tự 6,8" ;

Việc sử dụng số cột sẽ làm tăng thời gian phân tích cú pháp không cần thiết.

⑤ Ưu tiên sử dụng UNION ALL và tránh sử dụng UNION.

Tốt:

?
1
chuỗisql = "chọn tên từ hội sinh viên tất cả chọn tên từ giáo viên" ;

xấu:

?
1
chuỗisql = "chọn tên từ hội sinh viên chọn tên từ giáo viên" ;

Vì UNION so sánh các bản ghi của từng tập hợp con truy vấn nên nó thường chậm hơn nhiều so với UNION ALL. Nói chung, nếu sử dụng UNION ALL có thể đáp ứng được yêu cầu thì hãy đảm bảo sử dụng UNION ALL. Còn một trường hợp khác, nếu doanh nghiệp đảm bảo được sẽ không có hồ sơ trùng lặp.

⑥Tránh các thao tác tính toán trên các trường chỉ mục trong các câu lệnh hoặc thứ tự theo câu lệnh.

Tốt:

?
1
chuỗisql = "chọn people_name,pepole_age từ people nơi create_date=date1 " ;

xấu:

?
1
chuỗisql = "chọn people_name,pepole_age từ people nơi trunc(create_date)=date1" ;

Sau khi các thao tác được thực hiện trên các cột được lập chỉ mục, chỉ mục sẽ trở nên không hợp lệ. Cách tiếp cận đúng là tính toán giá trị và sau đó chuyển nó vào.

⑦Sử dụng không tồn tại thay vì không có.

Tốt:

?
1
chuỗisql = "chọn * từ các đơn hàng mà customer_name không tồn tại (chọn customer_name từ khách hàng)" ;

xấu:

?
1
chuỗisql = "chọn * từ các đơn hàng không có tên khách hàng (chọn tên khách hàng từ khách hàng)" ;

Nếu câu lệnh truy vấn sử dụng not in, toàn bộ bảng sẽ được quét trên cả bảng bên trong và bên ngoài mà không sử dụng chỉ mục; và truy vấn con của not extst vẫn có thể sử dụng chỉ mục trên bảng.

⑧ Sự khác biệt giữa tồn tại và trong.

in là kết nối băm giữa bảng bên ngoài và bảng bên trong, trong khi tồn tại là một vòng lặp trên bảng bên ngoài và bảng bên trong được truy vấn mỗi khi vòng lặp lặp lại. Do đó, in sử dụng chỉ mục của bảng bên ngoài và tồn tại sử dụng chỉ mục của bảng bên trong.

Nếu hai bảng được truy vấn có kích thước tương tự nhau thì không có nhiều khác biệt giữa việc sử dụng in và tồn tại.

Nếu một trong hai bảng nhỏ hơn và bảng kia là bảng lớn, việc sử dụng tồn tại cho bảng truy vấn con lớn hơn và cho bảng truy vấn con nhỏ hơn:

Ví dụ: Bảng A (bàn nhỏ), Bảng B (bàn lớn).

1:

?
1
lựa chọn * từ MỘT Ở đâu cc TRONG ( lựa chọn cc từ B)

Hiệu quả thấp, sử dụng chỉ số cột cc trên bảng A;

?
1
lựa chọn * từ MỘT Ở đâu tồn tại( lựa chọn cc từ B Ở đâu cc=A.cc)

Nó hiệu quả và sử dụng chỉ mục của cột cc trên bảng B.

2:

?
1
lựa chọn * từ B Ở đâu cc TRONG ( lựa chọn cc từ MỘT)

Hiệu quả cao, sử dụng chỉ số cột cc trên bảng B;

?
1
lựa chọn * từ B Ở đâu tồn tại( lựa chọn cc từ MỘT Ở đâu cc=B.cc)

Hiệu quả thấp và chỉ số của cột cc trên bảng A được sử dụng.

⑨Tránh thực hiện các thao tác sau trên cột chỉ mục:

◆Tránh sử dụng <>, != trên các trường chỉ mục ◆Tránh sử dụng IS NULL và IS NOT NULL trên các cột chỉ mục ◆Tránh chuyển đổi kiểu dữ liệu trên các cột chỉ mục (ví dụ: một trường có kiểu Chuỗi và các tham số được truyền vào là int kiểu ).

Khi sử dụng thao tác trên trên một cột được lập chỉ mục, chỉ mục sẽ trở nên không hợp lệ, dẫn đến việc quét toàn bộ bảng.

⑩Các hoạt động phức tạp có thể được chia thành nhiều bước.

Đôi khi có những ví dụ về hoạt động kinh doanh phức tạp được triển khai thông qua câu lệnh SQL. Để đạt được hoạt động kinh doanh phức tạp, các truy vấn con nhiều cấp được lồng vào nhau. Gây ra vấn đề về hiệu suất SQL. Trong trường hợp này, bạn có thể xem xét việc tách SQL và triển khai nó thông qua nhiều câu lệnh SQL hoặc để chương trình hoàn thành một số công việc mà chương trình có thể hoàn thành.

Tôi hy vọng bài viết này sẽ hữu ích cho mọi người trong lập trình cơ sở dữ liệu.

Cuối cùng, bài viết này về tóm tắt các kỹ thuật tối ưu hóa câu lệnh SQL phổ biến [cổ điển] kết thúc tại đây. Nếu bạn muốn biết thêm về tóm tắt các kỹ thuật tối ưu hóa câu lệnh SQL phổ biến [cổ điển], vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt qua các bài viết liên quan. Tôi hy vọng tất cả các bạn sẽ ủng hộ blog của tôi trong tương lai! .

26 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress