異なる(!)テーブルの行数をカウントし、ある種の統計のために結果を保存する必要があります。スクリプトは非常にシンプルで期待どおりに機能しますが、(この場合は)8つのサブクエリで単一のクエリを使用する方がよいのか、それとも個別の8つのクエリを使用する必要があるのか、それとももっと優れた、より高速な、より多くのクエリがあるのか疑問に思っています。高度なソリューション...
プリペアドステートメントでMySQLiを使用しているため、単一のクエリは次のようになります。
$sql = 'SELECT
(SELECT COUNT(cat1_id) FROM `cat1`),
(SELECT COUNT(cat2_id) FROM `cat2`),
(SELECT COUNT(cat2_id) FROM `cat2` WHERE `date` >= DATE(NOW())),
(SELECT COUNT(cat3_id) FROM `cat3`),
(SELECT COUNT(cat4_id) FROM `cat4`),
(SELECT COUNT(cat5_id) FROM `cat5`),
(SELECT COUNT(cat6_id) FROM `cat6`),
(SELECT COUNT(cat7_id) FROM `cat7`)';
$stmt = $db->prepare($sql);
$stmt->execute();
$stmt->bind_result($var1, $var2, $var3, $var4, $var5, $var6, $var7, $var8);
$stmt->fetch();
$stmt->free_result();
$stmt->close();
個別のクエリは次のようになります(x 8):
$sql = 'SELECT
COUNT(cat1_id)
FROM
`cat1`';
$stmt = $db->prepare($sql);
$stmt->execute();
$stmt->bind_result($var1);
$stmt->fetch();
$stmt->free_result();
$stmt->close();
したがって、この種のクエリ(統計、カウンターなど)に関連して、より高速または「より良いスタイル」になります。