Skip to content

erp5_mysql_innodb_catalog: replace multiple OR conditions with IN clause in SQL UPDATE query

Xiaowu Zhang requested to merge xiaowu.zhang/erp5:feat/query_optimisation into master

The current SQL method generates a query with many OR conditions,

which is inefficient:

UPDATE  record SET  played = 1 WHERE  uid = '1' OR   uid = '2' OR   uid = '3' OR   uid = '4' OR   uid = '5' OR   uid = '6' OR   uid = '7' OR   uid = '8' OR   uid = '9' OR   uid = '10' OR   uid = '11' OR   uid = '12' OR   uid = '13' OR   uid = '14' OR   uid = '15' OR   uid = '16' OR   uid = '17' OR   uid = '18' OR   uid = '19' OR   uid = '20' OR   uid = '21' OR   uid = '22' OR   uid = '23' OR   uid = '24' OR   uid = '25' OR .......

Replace it with a single IN clause for better performance and improved readability:

UPDATE  record SET  played = 1  WHERE uid IN (
'1',
'2',
'3',
'4',
'5', 
'6',
.
.
.
)

Merge request reports