gpt4 book ai didi

php - 优化 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 04:12:45 25 4
gpt4 key购买 nike

我必须获取数据库中发布日期介于两个日期之间的所有条目。所有日期都存储为整数,因为日期采用 UNIX TIMESTAMP 格式...以下查询工作完美,但需要“太长”。它返回 10 到 20 daz 之前的所有条目。

SELECT * FROM tbl_post WHERE published <  (UNIX_TIMESTAMP(NOW())-864000) 
AND published> (UNIX_TIMESTAMP(NOW())-1728000)

有什么办法可以优化这个查询吗?如果我没记错的话,它会在每个条目上调用 NOW() 和 UNIX_TIMESTAMP。我认为将这两个重复函数的结果保存到 mysql @var 中可以使比较更快,但事实并非如此。我运行的第二个代码是:

SET @TenDaysAgo = UNIX_TIMESTAMP(NOW())-864000;
SET @TwentyDaysAgo = UNIX_TIMESTAMP(NOW())-1728000;
SELECT * FROM tbl_post WHERE fecha_publicado < @TenDaysAgo
AND fecha_publicado > @TwentyDaysAgo;

另一个令人困惑的事情是 PHP 不能通过 mysql_query() 运行上述查询; ?!

请,如果您对此问题有任何意见,我们将非常欢迎:)

卢卡

最佳答案

确保在发布时有一个索引。并确保它正在被使用。

EXPLAIN SELECT * FROM tbl_post WHERE published <  (UNIX_TIMESTAMP(NOW())-864000)  AND published> (UNIX_TIMESTAMP(NOW())-1728000)

应该是了解查询中发生了什么的良好开端。添加索引:

ALTER TABLE tbl_post ADD INDEX (published)

关于php - 优化 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780789/

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