mysql的where条件中的字段不要加函数
#################################
root@10.10.10.10 (mac) > show create table apple\G *************************** 1. row *************************** Table: apple Create Table: CREATE TABLE `apple` ( `id` int(11) NOT NULL AUTO_INCREMENT, `cluster_name` varchar(64) NOT NULL, `queue_name` varchar(128) NOT NULL, `time` datetime NOT NULL, `apps` int(11) NOT NULL, `numapps` int(11) NOT NULL, `maxApps` int(11) NOT NULL, `used_resource` int(11) NOT NULL, `expected_share` int(11) NOT NULL, `max_resource` int(11) NOT NULL, `used_resource_memory` int(11) NOT NULL, `expected_memory` int(11) NOT NULL, `max_memory` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `time` (`time`) ) ENGINE=InnoDB AUTO_INCREMENT=218408440 DEFAULT CHARSET=utf8 1 row in set (0.14 sec) Wed Jun 23 14:30:00 2021 root@10.10.10.10 (mac) > select count(*) from apple; +-----------+ | count(*) | +-----------+ | 157898648 | +-----------+ 1 row in set (41.96 sec) Wed Jun 23 14:30:53 2021 root@10.10.10.10 (mac) > desc SELECT queue_name, AVG(used_resource)
FROM apple
WHERE cluster_name='azmbcommonprc-hadoop'
AND DATE(time) >='2021-06-22 00:00:00'
AND DATE(time) <= '2021-06-22 23:59:59'
GROUP BY queue_name; +----+-------------+---------+------------+------+---------------+------+---------+------+-----------+----------+----------------------------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+---------+------------+------+---------------+------+---------+------+-----------+----------+----------------------------------------------+ | 1 | SIMPLE | apple | NULL | ALL | NULL | NULL | NULL | NULL | 156586044 | 10.00 | Using where; Using temporary; Using filesort | +----+-------------+---------+------------+------+---------------+------+---------+------+-----------+----------+----------------------------------------------+ 1 row in set, 1 warning (0.14 sec) Wed Jun 23 14:31:58 2021
###################################################################
#####################:下面将time字段上的date函数去掉,则sql优化效果明显:
root@10.10.10.10 (mac) > desc SELECT queue_name, AVG(used_resource)
FROM apple
WHERE cluster_name='azmbcommonprc-hadoop'
AND time >= '2021-06-22 00:00:00'
AND time <= '2021-06-22 23:59:59'
GROUP BY queue_name; +----+-------------+---------+------------+-------+---------------+------+---------+------+--------+----------+---------------------------------------------------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+---------+------------+-------+---------------+------+---------+------+--------+----------+---------------------------------------------------------------------+ | 1 | SIMPLE | apple | NULL | range | time | time | 5 | NULL | 231088 | 10.00 | Using index condition; Using where; Using temporary; Using filesort | +----+-------------+---------+------------+-------+---------------+------+---------+------+--------+----------+---------------------------------------------------------------------+ 1 row in set, 1 warning (0.14 sec) Wed Jun 23 14:32:05 2021 root@10.10.10.10 (mac) > select * from apple limit 1\G; *************************** 1. row *************************** id: 1 cluster_name: azmbcommonprc-hadoop queue_name: root time: 2018-03-15 19:39:57 apps: 0 numapps: 0 maxApps: 700 used_resource: 0 expected_share: 15 max_resource: 324 used_resource_memory: 0 expected_memory: 30720 max_memory: 552960 1 row in set (0.14 sec) ERROR: No query specified Wed Jun 23 14:32:25 2021 root@10.10.10.10 (mac) >
##########################
############################
igoodful@qq.com