我有一个简单的保存日志:
XiD (INT) what was saved
UiD (INT) who done it
TiD (TIMESTAMP) CURRENT_TIMESTAMP
三个字段都在主键中-使其唯一。
我只想通知用户最新的日志行(直到她要求更多):
SELECT UiD,TiD FROM log WHERE XiD=? ORDER BY TiD DESC LIMIT 1
但是如果有十亿个记录有同样的氧化物会发生什么呢?
以上是有效的还是MySql服务器会检查所有的记录(按顺序)
-如果是这样的话:我如何使用最少的服务器卡路里来提取这样一个日志的最新记录?
注:我还没有实现任何东西,所以任何替代方案都是可能的:)
编辑:
也许更有效的方法是将who和when(UiD+TiD)直接存储(覆盖)在XiD记录的字段中(除了在日志中),这样我就可以直接获取它们,只在用户明确要求更多日志行时查看日志。。
最佳答案
不,引擎不会检查ORDER BY
的所有记录。它将检查WHERE
子句返回的所有记录。很抱歉,错过了,但是如果有十亿个相同的XiD记录会发生什么呢?。是的,引擎将检查ORDER BY
子句的所有记录。Here is the order of operations, as explained by Ben Nadel:
从句
WHERE子句
按子句分组
有从句
选择子句
按条款订货
IMHO,我认为没有更好的方法来提取最新的单张唱片。
关于mysql - 最新更改:按时间戳记排序DESC LIMIT 1-有效吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6439469/