Tôi có một cái bàn với hơn 15m hàng. Tôi cần tổng số hàng. Vì thế:
SELECT COUNT(*) FROM thetable;
Mất khoảng 50 giây để hoàn thành. Giải thích cho tôi Select tables optimized away
. Tôi cho rằng điều này có nghĩa là kết quả chỉ có thể được tìm thấy bằng cách sử dụng một chỉ mục, vậy tại sao nó vẫn mất nhiều thời gian như vậy? Dưới đây là một số thông tin về chỉ mục trên id
cột (Không thể rỗng):
Loại chỉ mục: BTREE (cụm)
Cardinality: 14623100
Duy nhất: CÓ
Làm cách nào tôi có thể cải thiện hiệu suất của truy vấn này? Cảm ơn.
Lưu ý: Cơ sở dữ liệu là MySQL 5.7.1 và sử dụng công cụ InnoDB.
BIÊN TẬP:
Tạo tuyên bố:
CREATE TABLE `properties` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`address` varchar(255) DEFAULT NULL,
`locality` varchar(50) DEFAULT NULL,
`latitude` decimal(13,9) DEFAULT NULL,
`longitude` decimal(13,9) DEFAULT NULL,
`state` varchar(10) DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
.....
PRIMARY KEY (`id`),
KEY `index_properties_on_address` (`address`),
KEY `index_properties_on_latitude` (`latitude`),
KEY `index_properties_on_longitude` (`longitude`),
KEY `index_properties_on_state` (`state`),
KEY `index_properties_on_created_at` (`created_at`),
.....
) ENGINE=InnoDB AUTO_INCREMENT=28267712 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;
Lưu ý: Tôi đã bỏ qua một số dòng, có 44 cột.
Giải thích kế hoạch:
+ ---- + ------------- + ------- + ------------ + ------ + - ------------- + ------ + --------- + ------ + ------ + ----- ----- + ------------------------------ + | id | chọn_type | bàn | phân vùng | loại | có thể_key | chìa khóa | key_len | tham khảo | hàng | lọc | Thêm | + ---- + ------------- + ------- + ------------ + ------ + - ------------- + ------ + --------- + ------ + ------ + ----- ----- + ------------------------------ + | 1 | ĐƠN GIẢN | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Chọn bảng được tối ưu hóa đi | + ---- + ------------- + ------- + ------------ + ------ + - ------------- + ------ + --------- + ------ + ------ + ----- ----- + ------------------------------ +