the*_*ect 8 mysql sql database
我有一个名为列updatetime是一个timestamp.因此,例如,平均外观价值可能是:2011-02-01 09:00:51.我希望无论日期如何,都能够搜索并返回当天特定时段的所有结果.
例如,如果我在列中搜索了BETWEEN 09:00:00 AND 09:59:99它将返回的值:
2011-02-01 09:00:51
2011-01-31 09:20:51
2011-01-11 09:55:44
etc....
Run Code Online (Sandbox Code Playgroud)
SELECT * FROM table WHERE updatetime ......
思考?
Pis*_*3.0 18
你可以使用HOUR()函数:
SELECT * FROM 'table' WHERE HOUR(`updatetime`) = 9
Run Code Online (Sandbox Code Playgroud)
唉,这个查询的性能会很糟糕,一旦你超过几千行 - 函数不可索引,所以每次运行这个查询时都会有一个完整的表扫描.
我们在类似的情况下做了什么:我们创建了另一个列updatetime_hour,索引它,并在插入时填充它(并在更新时更新); 然后查询变得很快:
SELECT * FROM 'table' WHERE `updatetime_hour` = 9
Run Code Online (Sandbox Code Playgroud)
是的,我们已经对数据进行了非规范化处理,而且还有更多的内务管理,但我还没有看到更快的解决方案.(我们考虑并测量了插入和更新触发器以填充updatetime_hourfrom updatetime,但决定性能;看看它们是否对您有用.)
| 归档时间: |
|
| 查看次数: |
19626 次 |
| 最近记录: |