-4
$query = "select * from a ...";
if($result = mysql_query($query,$con))
{while($row = mysql_fetch_array($result);)
        $arr[0][] = $row;
}
$query = "select * from b ...";
if($result = mysql_query($query,$con))
{
    while($row = mysql_fetch_array($result);)
        $arr[1][] = $row;
}
$query = "select * from c ...";
if($result = mysql_query($query,$con))
{
    while($row = mysql_fetch_array($result);)
        $arr[2][] = $row;
}

3 つのクエリは異なる構造を持つ複数の行を取得します。3 つのクエリでは 3 回の往復が必要です。10 回のクエリでは 10 回の往復が必要になります。

このケースをどのように最適化しますか?

4

2 に答える 2

1

select * の代わりに実際に必要な列を選択します

それ以外は、必要なデータとそれらがどのように関連しているかを知らずに言うことはあまりありません。

于 2009-09-21T17:11:46.010 に答える
0

UNION を試すことができます:

$query = "SELECT 'a' AS tablename, a.* FROM a
UNION
SELECT 'b' AS tablename, b.* FROM b
UNION
SELECT 'c' AS tablename, c.* FROM c";
if($result = mysql_query($query,$con))
{while($row = mysql_fetch_array($result);)

switch ($row['tablename']) {
    case "a":
        $arr[0][] = $row;
        break;
    case "b":
$arr[1][] = $row;
        break;
    case "c":
        $arr[2][] = $row;
        break;
}
}

私のphpを許してください、それは私の専門分野ではありません:)

于 2009-09-21T17:19:40.300 に答える