cuốn sách gpt4 ai đã làm

mysql - Bổ sung :-Sử dụng ở đâu Sử dụng tạm thời Sử dụng filesort Cách tối ưu hóa MYSQL

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 11:35:20 26 4
mua khóa gpt4 Nike

Chỉ mục chính xác cho truy vấn này là gì.

Tôi đã thử đưa ra các kết hợp chỉ mục khác nhau cho truy vấn này nhưng nó vẫn sử dụng các tệp tạm thời, sắp xếp tệp, v.v.

Tổng số dữ liệu bảng- 7,60,346

产品= 'dress' - tổng số hàng = 122 554

TẠO BẢNG NẾU KHÔNG TỒN TẠI `product_data` (
`table_id` int(11) KHÔNG AUTO_INCREMENT NULL,
`id` int(11) KHÔNG NULL,
`price` int(11) KHÔNG NULL,
`store` varchar(255) KHÔNG NULL,
`thương hiệu` varchar(255) NULL mặc định,
`product` varchar(255) KHÔNG NULL,
`model` varchar(255) KHÔNG NULL,
`size` varchar(50) KHÔNG NULL,
`giảm ​​giá` varchar(255) KHÔNG NULL,
`giới_id` int(11) KHÔNG NULL,
`sẵn có` int(11) KHÔNG NULL,
KHÓA CHÍNH (`bảng_id`),
KHÓA ĐỘC ĐÁO `table_id` (`table_id`),
KHÓA `id` (`id`),
TỪ KHÓA `giảm ​​giá` (`giảm ​​giá`),
KEY `step_one` (`sản phẩm`,`sẵn có`),
KEY `step_two` (`product`,`availability`,`brand`,`store`),
TỪ KHÓA `bước_ba` (`sản phẩm`,`sẵn có`,`thương hiệu`,`cửa hàng`,`id`),
TỪ KHÓA `step_four` (`thương hiệu`,`cửa hàng`),
KEY `bước_năm` (`thương hiệu`,`cửa hàng`,`id`)
) ĐỘNG CƠ=InnoDB;

查询:

CHỌN id, cửa hàng, nhãn hiệu TỪ `product_data` WHERE sản phẩm = 'váy' và 
tính sẵn có='1' nhóm theo thương hiệu,đơn hàng theo cửa hàng giới hạn 10;

excu..time :- (Tổng cộng 10, Truy vấn mất 1,0941 giây)

Giải thích kế hoạch:


Các phím có thể có: - bước_một, bước_hai, bước_ba, bước_bốn, bước_năm

chìa khóa:- bước_hai

Trích dẫn:- hằng số, hằng số

ĐƯỢC RỒI:- 229438

thêm vào:-Sử dụng ở đâu; sử dụng tạm thời; sử dụng sắp xếp tập tin

Tôi đã thử các chỉ mục này


Chìa khóa bước_một(产品,sẵn có)

Chìa khóa bước_hai (product,sẵn có,thương hiệu,store)

Chìa khóa bước_ba (product,sẵn có,thương hiệu,store,NHẬN DẠNG)

Chìa khóa bước_bốn (thương hiệu,store)

Chìa khóa bước_năm (thương hiệu,store,NHẬN DẠNG)

câu trả lời hay nhất

Vấn đề thực sự không phải là chỉ số, mà là GROUP BYORDER BY Sự không phù hợp giữa GIỚI HẠN việc sử dụng.

cái này

INDEX(sản phẩm, tình trạng còn hàng, cửa hàng, nhãn hiệu, id)

sẽ được "che đậy" theo đúng thứ tự. Nhưng xin lưu ý rằng tôi đã đổi chỗ storethương hiệu...

Thay đổi truy vấn thành

CHỌN id, cửa hàng, thương hiệu
TỪ `dữ liệu sản phẩm`
WHERE sản phẩm='váy'
và tính sẵn có='1'
NHÓM THEO cửa hàng, thương hiệu -- thay đổi
ĐẶT HÀNG THEO cửa hàng, nhãn hiệu -- thay đổi
giới hạn 10;

Điều này sẽ GROUP BY Thay đổi thành store Bắt đầu với sự phản ánh ORDER BY Sắp xếp - Điều này tránh việc sắp xếp bổ sung. và sẽ ORDER BY Thay đổi thành GROUP BY Tương tự để kết hợp cả hai.

Có tính đến những thay đổi này,CHỈ SỐ Bây giờ bạn có thể đi đến tận cùng GIỚI HẠN, cho phép quá trình xử lý chỉ xem xét 10 hàng thay vì một tập hợp lớn hơn.

Bất cứ điều gì ít hơn tất cả những thay đổi này sẽ không hiệu quả.

Thảo luận thêm:

INDEX(sản phẩm, tình trạng còn hàng, -- hai giá trị này có thể theo một trong hai thứ tự
cửa hàng, thương hiệu -- phải khớp cả `GROUP BY` và `ORDER BY`
id) -- đính vào (ở cuối) để "che"

“che phủ” có nghĩa là tất cả SELECT Các cột đều nằm trong CHỈ SỐ được tìm thấy trong , do đó không cần truy cập dữ liệu.

但是...Toàn bộ truy vấn không có ý nghĩa,因为 SELECT bao gồm trong NHẬN DẠNG. Nếu bạn muốn biết cửa hàng nào có sẵn váy, hãy xóa NHẬN DẠNG. Nếu bạn muốn liệt kê tất cả quần áo có sẵn, hãy đặt NHẬN DẠNG Thay đổi thành GROUP_CONCAT(id).

Về mysql - Extra :-Sử dụng ở đâu; Sử dụng filesort cách tối ưu hóa MYSQL, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/46484341/

26 4 0
không gian vũ trụ
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