什么时候在MySQL中查询结尾添加LIMIT 1是合适的.我通常在DELETE中添加它但我已经看到它与INSERT一起使用甚至UPDATE.这是一种矫枉过正还是一种好习惯?
peu*_*feu 37
INSERT INTO .. VALUES () LIMIT 1
Run Code Online (Sandbox Code Playgroud)
不存在.希望你知道你放了多少VALUES()!
INSERT INTO .. SELECT ... LIMIT 1
Run Code Online (Sandbox Code Playgroud)
存在并且非常有用,并且因为LIMIT在SELECT上而非主题.
DELETE ... LIMIT 1
UPDATE ... LIMIT 1
Run Code Online (Sandbox Code Playgroud)
极少有用.要么您知道您的数据库足以确定您的WHERE是否符合UNIQUE条件,要么您不知道,在这种情况下,您应该花更多时间查看数据库并学习SQL.
但......
UPDATE jobs SET owner=me WHERE owner IS NULL ORDER BY job_submit_time LIMIT 1
Run Code Online (Sandbox Code Playgroud)
可以非常有用!这使得一个接近无锁的作业队列,您可以从队列中获取作业,而无需等待,锁定或解决冲突.非常好.
DELETE FROM cache ORDER BY last_update_time LIMIT N
Run Code Online (Sandbox Code Playgroud)
缓存占用太多空间?清除N个最古老的行......
Ric*_*haw 23
好吧,如果你使用EXPLAIN,你会发现它会加速,因为一旦找到一个结果,它就会停止.
这也是一个故障保护 - 如果你知道你的更新插入应该只影响一行,通过指定它,你保证它不会出错并弄乱多行.
归档时间: |
|
查看次数: |
70073 次 |
最近记录: |