![]() |
1
2
一个简单的解决方案是将其分为两个连续的查询。即。,: 从users WHERE(userflags&1048576)中选择userid进入tmptable; 从userid所在的会话中删除!=0和lastactivity<1289594761和admin=1,用户id不在(从tmptable中选择用户id); 这样,您就可以使用第二个表中值的本地会话副本,而不会对其造成读锁。然而,这只是一个快速而肮脏的解决方案。一个更好的解决方案是分析所有接触这两个表的活动的事务锁设置,并重写查询(如果您将定期使用它的话)。 |
![]() |
2
2
可能您会更频繁地得到错误,因为这现在是一个更慢的查询。
这个
如果架构的工作方式与预期的一样,则应该可以使用简单的联接来完成此操作,该联接通常比子查询执行得更好:
(连接
|
![]() |
Calvin Adiwinata · 如何在mysql中放置外键 7 年前 |
![]() |
Pazu Lee · mysql innodb mvcc测试 7 年前 |
![]() |
Airikr · 如果使用总和>100,则100以下的总和仍将显示 7 年前 |
![]() |
user3292788 · Mysql:自动递增的最高值总是最近的吗? 7 年前 |
![]() |
Lefty · INSERT INTO语句不能正确插入特定值? 8 年前 |
![]() |
Gunnar Berg · 外键和范围查询的索引设计 8 年前 |
![]() |
BlackBrain · MySQL死锁,带有引发触发器的插入 8 年前 |