我们刚刚将数据库从MySQL 5.0服务器迁移到5.5服务器,这样的简单查询似乎不再按预期工作:
SELECT * FROM (
SELECT *
FROM tblTable
ORDER BY fldField ASC
) tmp
GROUP BY fldField
内部查询仍会返回正确排序的记录集,但group by不再选择该集合的第一条记录。
将订单切换为DESC也没有任何影响,因此可能是group by尚未切换到选择最后一条记录。
据我所知,group by实际上只是根据创建的顺序选择第一条记录,而不是实际记录集的顺序。如果这有意义吗?
我似乎无法找到任何错误报告或更改日志备注,所以希望有人在这里有想法吗?
答案 0 :(得分:0)
事实证明,CentOS 7发布了MariaDB而不是MySQL,MariaDB忽略了内部查询的ORDER BY子句,让外部查询将内部的结果集作为无序表处理,以获得更好的性能。 / p>
这里有两种选择。之一:
添加MySQL社区版覆盖并从中安装MySQL而不是从CentOS存储库安装,根据以下许多文章之一:https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-centos-7
或修改具有ORDER BY子句的内部查询也具有LIMIT子句,这会导致MariaDB将结果集视为有序表。 E.g。
&io_thread::init_finished
希望这能节省一些时间。