作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚将 MySQL 5.0 服务器升级到 MySQL 5.5,发现之前有效的存储例程已损坏。区别:MySQL 5.5 似乎以任意顺序插入行。因此,在以下代码中,ORDER BY
子句不起作用。 AFAIK,MySQL 5.0 中曾经有过这样的功能。
INSERT INTO MyTable
SELECT * FROM MyOtherTable ORDER BY Col1, Col2 DESC;
人们说,根据定义,order is irrelevant在 INSERT
中:当从表中使用 SELECT
时,只需使用 ORDER BY
即可。问题是我使用游标循环表并执行复杂的操作。当然,我可以将 ORDER BY
语句放在游标定义上:
DECLARE cur CURSOR FOR SELECT * FROM MyTable ORDER BY Col1, Col2 DESC;
但这会减慢例程:从 MySQL 5.0 上的 10 秒到 MySQL 5.5 上的 10 分钟以上。
关于如何解决问题有什么想法吗?
最佳答案
在(Col1, Col2)
上添加索引以加快排序速度。
关于mysql - INSERTing 到 MySQL 表时忽略 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14853597/
我是一名优秀的程序员,十分优秀!