Hướng dẫn mysql update order by - thứ tự cập nhật mysql theo
8.2.1.16 & nbsp; Đặt hàng bằng cách tối ưu hóaPhần này mô tả khi MySQL có thể sử dụng chỉ mục để đáp ứng điều khoản 7, hoạt động 8 được sử dụng khi không thể sử dụng chỉ mục và thông tin kế hoạch thực thi có sẵn từ trình tối ưu hóa khoảng 7.Một 7 có và không có 1 có thể trả lại các hàng theo các đơn đặt hàng khác nhau, như được thảo luận trong Phần & NBSP; 8.2.1.19, Tối ưu hóa truy vấn giới hạn.
Sử dụng các chỉ mục để đáp ứng trật tự bằng cáchSử dụng filesort để đáp ứng trật tự bằng cách Ảnh hưởng đến trật tự bằng cách tối ưu hóa Đặt hàng theo thông tin kế hoạch thực thi có sẵn
Trong hai truy vấn tiếp theo, 3 được so sánh với một hằng số. Chỉ mục được sử dụng nếu mệnh đề 6 đủ chọn lọc để làm cho một phạm vi chỉ mục quét rẻ hơn so với quét bảng:cannot use indexes to resolve the 7, although it may still use indexes to find the rows that match the 6 clause. Examples:
Tính khả dụng của một chỉ mục để phân loại có thể bị ảnh hưởng bởi việc sử dụng các bí danh cột. Giả sử rằng cột 9 được lập chỉ mục. Trong câu lệnh này, tên của cột trong danh sách chọn là 0. Nó đề cập đến 9, cũng như tham chiếu đến 0 trong 7, do đó, chỉ mục trên 9 có thể được sử dụng: 1Trong tuyên bố này, tên của cột trong danh sách chọn cũng là 0, nhưng đó là tên bí danh. Nó đề cập đến 6, cũng như tham chiếu đến 0 trong 7, do đó, chỉ mục trên 9 không thể được sử dụng: 2Trong câu lệnh sau, 7 đề cập đến một tên không phải là tên của một cột trong danh sách chọn. Nhưng có một cột trong 6 có tên 0, do đó 4 đề cập đến 9 và chỉ số trên 9 có thể được sử dụng. (Tất nhiên, thứ tự sắp xếp kết quả có thể hoàn toàn khác với thứ tự cho 6, tất nhiên.) 3Trước đây (MySQL 5.7 trở xuống), 3 được sắp xếp ngầm trong các điều kiện nhất định. Trong MySQL 8.0, điều đó không còn xảy ra, do đó việc chỉ định 8 ở cuối để triệt tiêu việc sắp xếp ngầm (như đã thực hiện trước đó) không còn cần thiết nữa. Tuy nhiên, kết quả truy vấn có thể khác với các phiên bản MySQL trước đó. Để tạo ra một đơn đặt hàng sắp xếp nhất định, cung cấp một mệnh đề 7.Sử dụng filesort để đáp ứng trật tự bằng cáchNếu một chỉ mục không thể được sử dụng để thỏa mãn mệnh đề 4, MySQL thực hiện thao tác 8 đọc các hàng bảng và sắp xếp chúng. Một 8 tạo thành một giai đoạn sắp xếp thêm trong thực thi truy vấn.Để có được bộ nhớ cho các hoạt động 8, kể từ MySQL 8.0.12, trình tối ưu hóa phân bổ bộ đệm bộ nhớ tăng dần khi cần, theo kích thước được chỉ ra bởi biến hệ thống ____104 đến MySQL 8.0.12. Điều này cho phép người dùng đặt 04 thành các giá trị lớn hơn để tăng tốc các loại lớn hơn, mà không quan tâm đến việc sử dụng bộ nhớ quá mức cho các loại nhỏ. (Lợi ích này có thể không xảy ra đối với nhiều loại đồng thời trên Windows, có đa luồng yếu 07.)Hoạt động 8 sử dụng các tệp đĩa tạm thời khi cần thiết nếu tập kết quả quá lớn để phù hợp với bộ nhớ. Một số loại truy vấn đặc biệt phù hợp với các hoạt động 8 hoàn toàn trong bộ nhớ. Ví dụ: trình tối ưu hóa có thể sử dụng 8 để xử lý hiệu quả trong bộ nhớ, mà không cần tệp tạm thời, hoạt động 7 cho các truy vấn (và các nhóm phụ) của mẫu sau: 4Các truy vấn như vậy là phổ biến trong các ứng dụng web chỉ hiển thị một vài hàng từ một tập kết quả lớn hơn. Ví dụ: 5Ảnh hưởng đến trật tự bằng cách tối ưu hóaĐối với các truy vấn 7 chậm mà 8 không được sử dụng, hãy thử hạ biến hệ thống 14 xuống một giá trị phù hợp để kích hoạt 8. . Tính đến 8.0.20, 14 không được dùng để thay đổi trình tối ưu hóa khiến nó lỗi thời và không có hiệu lực.Để tăng tốc độ 7, hãy kiểm tra xem bạn có thể nhờ MySQL sử dụng các chỉ mục thay vì pha sắp xếp thêm. Nếu điều này là không thể, hãy thử các chiến lược sau:
Đặt hàng theo thông tin kế hoạch thực thi có sẵnVới 0 (xem Phần & NBSP; 8.8.1, Tối ưu hóa các truy vấn với giải thích), bạn có thể kiểm tra xem MySQL có thể sử dụng các chỉ mục để giải quyết mệnh đề 4 không:
Ngoài ra, nếu một 8 được thực hiện, đầu ra theo dõi tối ưu hóa bao gồm một khối 38. Ví dụ: 6
39 chỉ ra bộ nhớ tối đa được sử dụng tại bất kỳ thời điểm nào trong thời gian sắp xếp. Đây là một giá trị lên đến nhưng không nhất thiết phải lớn bằng giá trị của biến hệ thống 04. Trước MySQL 8.0.12, đầu ra hiển thị 04 thay vào đó, cho biết giá trị của 04. . )Giá trị 45 cung cấp thông tin về nội dung của bộ dữ liệu trong bộ đệm sắp xếp:
0 không phân biệt liệu trình tối ưu hóa có hoặc không thực hiện 8 trong bộ nhớ hay không. Có thể thấy việc sử dụng một 8 trong bộ nhớ trong đầu ra theo dõi trình tối ưu hóa. Tìm kiếm 52. Để biết thông tin về dấu vết của trình tối ưu hóa, hãy xem MySQL Internals: Truy tìm Trình tối ưu hóa. |