我有两个 MySQL 查询,它们都将数据插入到表中。两者都具有以下格式:
CREATE TABLE IF NOT EXISTS `data` (
`id` BIGINT NOT NULL AUTO_INCREMENT UNIQUE,
PRIMARY KEY (`id`)
)
SELECT `field1`, `field2`
WHERE `active` = 1
两个查询之间的唯一区别是如何确定field1
和field2
确定,以及条件子句中的一些细微差别。两者都运行高达 12K 和更多的记录。
现在,什么会更有效:
A. 分别运行两个查询:
if (mysql_query($query1)) {
return mysql_query($query2);
}
return false;
B. 或将这两个查询与 UNION 组合,并运行一次:
$query = 'SELECT `field1`, `field2` WHERE `active` = 1
UNION
SELECT DO_ONE(`field1`), DO_TWO(`field2`) WHERE `active` = 1
ORDER BY `field1`';
return mysql_query('CREATE TABLE IF NOT EXISTS `data` (
`id` BIGINT NOT NULL AUTO_INCREMENT UNIQUE,
PRIMARY KEY (`id`)
) ' . $query)
如果没有来自另一个查询的数据,来自一个查询的数据是无用的,因此两者都需要成功。DO_ONE
并且DO_TWO
是用户定义的 MySQL 函数,可根据某些规范更改字段数据。