mysql order by操作性能问题_MySQL
在我的笔记本上,运行如下 sql代码(总共数据行约7万行,无索引)
select * from(
SELECT nodeinfo.nodeID nodeid,nodeinfo.niid niid ,nodeinfo.type type ,nodeinfo.testType testtype,sensordatapacket.storedtime storedtime,sensordatapacket.value value,
sensordatapacket.unit unit,sensordatapacket.dataType datatype,nodeconfig.nodeAddress nodename
FROM
nodeinfo
Left Join sensordatapacket ON nodeinfo.nodeID = sensordatapacket.nodeID
Left Join nodeconfig ON nodeconfig.nodeID = nodeinfo.nodeID
where testtype='待测' and type='土壤温度' order by storedtime desc) a
group by a.nodeid order by a.storedtime desc
红字标注部分,使用order by storedtime desc时候 共用时9.284s
使用order by storedtime asc时候,共用时17.04s
不使用order by操作的时候共用时2.022s。
目的时候对每个nodeid,检索出storedtime最近的一条数据。
若不使用order by 操作,检索出数据,storedtime时间为中间的一个某个时间。符合E.F.Codd博士在“a relation modal of data for large shared data banks”中提出的
数据库关系模型 的理论。数据库的物理存储并不一定是按照主键顺序存储,数据表中的数据本质上是在一个集合中。
bitsCN.com推荐阅读
-
Mysql5.7中使用group concat函数数据被截断的问题完美解决方法
-
Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini及服务无法启动的快速解决办法(问题小结)
-
解决mysql ERROR 1045 (28000)-- Access denied for user问题
-
MySQL 数据库跨操作系统的最快迁移方法
-
mysql proxy问题的解决方法
-
完美解决MySQL通过localhost无法连接数据库的问题
-
Mysql数据库性能优化之子查询
-
在Python程序中操作MySQL的基本方法
-
mysql insert的几点操作(DELAYED,IGNORE,ON DUPLICATE KEY UPDATE )
-
mysql启动时出现ERROR 2003 (HY000)问题的解决方法