gpt4 book ai didi

PHP,如何编写更快的查询来更新大对象

转载 作者:行者123 更新时间:2023-11-29 10:52:53 25 4
gpt4 key购买 nike

我有以下查询,它非常完美。它允许我从我的数据库中获取绘制图表的分数,适用于大范围的输入时间范围和选项。

$get_net_sql=   "SELECT  nic_name,
AVG(bytes_sent) as down_speed,
AVG(bytes_recv) as up_speed,
unix_timestamp
FROM ( SELECT nic_name, bytes_sent, bytes_recv,
(".
$sql_sample_size.
"*ROUND(unix_timestamp/". $sql_sample_size. ")
) As unix_timestamp
FROM tbl_network_stats
WHERE timestamp>(NOW() - INTERVAL ". $time. " ". $sql_unit. ")
) AS sub_table
GROUP BY unix_timestamp, nic_name
ORDER BY unix_timestamp, nic_name DESC;";

当然,当您处理数天或数周的数据时,这是一个缓慢的查询。所以我想做的是用这个查询绘制图形(在 Canvas 上),并更新运行图形间隔的 json 对象,每秒以更快的查询速度。

我已经加入了工作,但我找不到上述查询的正确更快版本...现在写下这是我得到的:

$get_net_sql = "SELECT  nic_name,
bytes_sent as down_speed,
bytes_recv as up_speed,
unix_timestamp
FROM tbl_network_stats
WHERE unix_timestamp =
( SELECT unix_timestamp
FROM tbl_network_stats
ORDER BY unix_timestamp DESC
LIMIT 1
)";

我在这里试图解决的真正问题是,当我每秒使用第一个查询不断更新我的图表时,它会实时更新,这是完美的,但每次都会获取所有新数据并且速度很慢,我的处理器由于此问题以及针对网络和 RAM 趋势数据进行的 3 个类似查询,上涨了 25%。因此,如果他们消耗 25% 的 CPU 来观看这些精美的图表,谁会愿意呢!

我想到的寻求帮助或替代方案的解决方案是在页面加载时运行第一个查询,并每秒将其与更快的查询连接起来。

谢谢 Maango,看看索引有多大的不同(我本来可以花一个月的时间来解决这个问题,非常感谢,如此明显却埋葬了一个解决方案):enter image description here

最佳答案

我有两个建议:

首先将子查询更改为:

(SELECT max(unix_timestamp) FROM tbl_network_stats)

这可能会有所不同,但我没有您的数据来测试它。

二、添加索引:

ALTER TABLE tbl_network_stats ADD INDEX ux_ts (unix_timestamp);

这将加快任何 ORDER BY 或其他需要查找值的子句的速度。

关于PHP,如何编写更快的查询来更新大对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43433218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com