一条简单的select查询语句 查询出280万条数据,用时3.99s,怎么能优化成一秒内
问题描述:
查询语句
SELECT * FROM salaries ;
表结构
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`),
KEY `emp_no` (`emp_no`),
CONSTRAINT `salaries_ibfk_1` FOREIGN KEY (`emp_no`) REFERENCES `employees` (`emp_no`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
答
首先分析需求280万的数据你一次性取出要怎么展示?有多高的可读性?如果没有,加查询条件过滤无用数据。再根据你的查询条件做索引。
再一个,如果查询次数比较多数数据不怎么会更新,建议增加缓存机制。第一次查询出来的数据保存到缓存里,下次查询速度就会比较快了。缓存里取数据肯定比连数据库取数据快很多
答
可以利用explain SELECT * FROM salaries 来进行最大程度优化
答
280万条数据你要一次性全部查出来?什么需求啊?如果现在的表3.99秒,那么将表进行分区看能不能达到你的需求。如果还是达不到1秒,买更好的sql服务器把。
答
你这个select 简单的不能再简单了 如果你的需求就是需要这个表的所有数据的话 确实没办法在优化了,,
答
从你提供的信息,我确实无法从表结构和执行计划上面下手来优化。建议你试一下TokuDB存储引擎。