テーブルにデータを挿入する 2 つの MySQL クエリがあります。どちらも次の形式です。
CREATE TABLE IF NOT EXISTS `data` (
`id` BIGINT NOT NULL AUTO_INCREMENT UNIQUE,
PRIMARY KEY (`id`)
)
SELECT `field1`, `field2`
WHERE `active` = 1
2 つのクエリの唯一の違いは、 と が決定される方法field1
とfield2
、条件句の小さな違いです。どちらも最大 12K 以上のレコードを実行します。
さて、より効率的なものは次のとおりです。
A. 両方のクエリを別々に実行します。
if (mysql_query($query1)) {
return mysql_query($query2);
}
return false;
B. OR 2 つのクエリを UNION で結合し、1 回実行します。
$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 関数です。