多表连接 - 删除查询 - 最佳方式

时间:2010-11-05 17:22:58

标签: mysql

这是一个需要1到2秒才能执行的查询(mysql查询)

DELETE t1 FROM table1 t1, table2 t2, table3 t3, table4 t4 
WHERE (t1.column1 = t2.column1 OR t1.colum2 = t2.column1) 
AND t2.column1 = t3.column1 
AND t3.column2 = t4.column1
AND t4.column2=100;

我正在寻找几毫秒的执行时间。有没有最佳的实现方式?

3 个答案:

答案 0 :(得分:0)

向表中添加索引,这将提高删除性能和查询。

答案 1 :(得分:0)

尝试将其分解为两个不同的删除查询并删除“OR”子句。像这样的OR子句通常会导致全表扫描。如有必要,使用事务来确保两个查询都执行,因为它们分为两部分。

答案 2 :(得分:0)

优化它的方法是添加索引 - 但很难从查询中判断出索引的用处。尝试使用标准的JOIN语法;这将帮助您解决ON子句和WHERE子句之间的区别,以及不同索引可能有帮助的地方。