Mysql如何做到这一点而不锁定
我想查询一个表,看看是否存在任何“A”类型的行。 因此,我使用以下sql:Mysql如何做到这一点而不锁定,mysql,sql,database-performance,sqlperformance,Mysql,Sql,Database Performance,Sqlperformance,我想查询一个表,看看是否存在任何“A”类型的行。 因此,我使用以下sql: SELECT EXISTS(select * from %T where type = 'A'); 然后我需要将另一个表的列值更新为上述结果。为了防止在更新期间发生“A”类型的插入,我考虑使用锁。但是锁是非常昂贵的,有没有其他方法可以不用锁来实现呢 若我们必须使用lock,我认为若表已经有了类型A,那个么在更新期间就不需要锁定insert,因为结果仍然是1。仅当没有类型为A的行时才防止插入。如何执行 谢谢 由于您希望在
SELECT EXISTS(select * from %T where type = 'A');
然后我需要将另一个表的列值更新为上述结果。为了防止在更新期间发生“A”类型的插入,我考虑使用锁。但是锁是非常昂贵的,有没有其他方法可以不用锁来实现呢
若我们必须使用lock,我认为若表已经有了类型A,那个么在更新期间就不需要锁定insert,因为结果仍然是1。仅当没有类型为A的行时才防止插入。如何执行
谢谢 由于您希望在存在类型“a”时更新表,通常我建议您在插入或删除行后立即进行更新或检查 或者你可以这样做:
UPDATE table1 t1
LEFT JOIN table2 t2 ON t1.type = t2.type
SET t1.column1 = 1
WHERE t2.type IS NOT NULL
或
请提供更多详细信息,例如您的表是什么样的,以及您想要做什么,以便我们进一步讨论。您是否尝试过SQL中的事务处理?我想你可以用这个。此链接将帮助您更新另一个_table SET field=SELECT EXISTS…?当然,任何锁都比更新便宜。你的实际目标是什么?您可能想要的不是显式锁定,而是谢谢!如果我使用UPDATE table1 t1 SET t1.column1=1(如果存在),请选择。。。来自表2,其中类型='A';更新期间是否允许在表2中插入类型为='A'的内容?
UPDATE table1 t1
SET t1.column1 = 1
WHERE EXISTS (
SELECT ...
FROM table2
WHERE type = 'A'
);