1

次のように MySQL テーブルから行を選択しています。

SELECT id, name, code FROM table

ここでやりたいことは、コードが配列で指定された一連の文字で始まる行を選択することです。ベスト プラクティスは何ですか? a) MySQL クエリを変更して SUBSTRING と IN を使用するか、b) PHP を使用して後で行をフィルター処理しますか?

a)

$qsql = mysql_query("SELECT id, name, code FROM table WHERE SUBSTRING(code, 1, 2) IN ('AB', 'BA', 'ZK', ...)");
while($sql = mysql_fetch_assoc($qsql)) {
    // Do something
}

または b)

$codes = array('AB', 'BA', 'ZK', ...);
$qsql = mysql_query("SELECT id, name, code FROM table");
while($sql = mysql_fetch_assoc($qsql)) {
    if(!in_array($sql['code'], $codes))
        continue;
    // Do something
}

コード配列には、おそらく 30 個までの要素が含まれます。

4

2 に答える 2

0

A) 可能な限り SQL に任せましょう。ほとんどの場合、後でデータを処理するよりも高速です。SQL はデータの管理とフィルタリングに優れているため、可能な場合は SQL でデータを処理します。

于 2012-11-29T12:41:27.027 に答える
0

LIKE のリストを動的に生成します。

$codes = array('AB', 'BA', 'ZK', ...);
$qsql = mysql_query("SELECT id, name, code FROM table WHERE code LIKE ('".implode("%','", $codes)."%')");
while($sql = mysql_fetch_assoc($qsql)) {
    // Do something
}

コードがサニタイズされていると仮定する

于 2012-11-29T13:30:42.557 に答える