nta*_*tan 12 mysql sql-order-by
我有一个包含2个日期的表 - ADDDATE和UPDATEDATE.
当添加一个项目,该ADDDATE是当前日期和UPDATEDATE是0000-00-00.
我需要ORDER BYSQL命令,并获得这些2的最佳日期
例如,如果加入= 12/1/2010和UPDATE = 30/6/2010年,更新日期是最好的(最新).
有什么建议?
Mar*_*ers 24
使用GREATEST查找最新日期:
ORDER BY GREATEST(UPDATEDATE, ADDDATE)
Run Code Online (Sandbox Code Playgroud)
Wri*_*ken 12
ORDER BY IF(UPDATEDATE > ADDDATE, UPDATEDATE, ADDDATE)
Run Code Online (Sandbox Code Playgroud)
如果要使数据库可伸缩,最好的方法是添加一个新列LATESTDATE以及一个插入/更新触发器,该触发器使用例如最大值将其设置为两个候选字段中的最新字段.
随着表变大,在选择上运行的每行功能会非常快地减慢速度.如果您希望性能随着表的增长而保持可用性,那么这种技巧就是常见的.
它在技术上违反了3NF,因为它复制了其中一个日期,但由于性能原因违规是正常的,并且您仍然保持ACID属性,因为触发器要求列保持一致.
我不知道我的头脑中的MySQL触发器语法(我自己是一个DB2人)但我会做以下事情:
update TBL set ADDDATE = ADDDATE以便触发所有当前行的触发器.此解决方案的优势在于它将计算成本移动到数据更改的时间,而不是每次查询数据库时.这会使所有读取的成本摊销,使其更有效率(除非您是那些非常罕见的野兽之一,其中表格的编写频率高于阅读时间).
请记住,如果桌子的大小相对较小,则可能没有必要 - 我在桌子真正巨大的环境中工作.
| 归档时间: |
|
| 查看次数: |
4951 次 |
| 最近记录: |