加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – mysql查询速度 – 选择每3行的最大值

发布时间:2020-12-13 22:46:23 所属栏目:PHP教程 来源:网络整理
导读:我有一张包含价格信息的表格.我需要选择每三行的最大值.例: Table `daily_high` ____ _______| ID | HIGH || 1 | 24.65 || 2 | 24.93 || 3 | 26.02 || 4 | 25.33 || 5 | 25.16 || 6 | 25.91 || 7 | 26.05 || 8 | 28.13 || 9 | 27.07 ||____|_______|Desired
我有一张包含价格信息的表格.我需要选择每三行的最大值.例:

Table `daily_high`
 ____ _______
| ID | HIGH  |
| 1  | 24.65 |
| 2  | 24.93 |
| 3  | 26.02 |
| 4  | 25.33 |
| 5  | 25.16 |
| 6  | 25.91 |
| 7  | 26.05 |
| 8  | 28.13 |
| 9  | 27.07 |
|____|_______|


Desired output to new table (ID will be auto-increment so don't assume an association exists between this ID 1 and the daily_high ID 1:
 ____ ___________
| ID | 3MaxHIGH  |
|____|___________|
| 1  | 26.02     |
| 2  | 25.91     |
| 3  | 28.13     |
|____|___________|

我想比较ID 1,2和3来确定它们之间的高值.然后,一旦我比较了1-3,我想继续进行4到6,然后是7到9等,直到我为表中包含的所有值(目前大约400,000个值)完成此操作.我编写了使用的代码

SELECT max(HIGH)FROM daily_high为dh1 JOIN(SELECT max(HIGH)FROM daily_high WHERE id> = dh1 AND id<(dh1.id 3)) 这有效,但速度非常慢.我已经尝试使用SELECT语句,我在其中标识要显示的列值,这意味着在查询的SELECT和FROM部分之间. 我试图使用JOIN将所有3行连接到同一个表上进行比较,但它也非常慢.慢了我的意思是在不到10秒的时间内收集20行的信息.这意味着查询在9.65879893303秒内分析了60行(20组3个)(我没有这样做,我用microtime()来计算它. 任何人都有任何建议比我更快的代码? 请记住,我的实际表格与我上面发布的表格不同,但概念是相同的. 谢谢你的帮助.

解决方法

如果你持续识别,你可以做到这一点

SELECT floor(id/3) as range,max(HIGH) FROM daily_high GROUP BY range;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读