データベース上の複数の列にわたって1つの入力をクエリするMETAデータ(列名)を収集する必要のあるAJAXクエリを構築しています。MySQL MySQL /クエリ効率でSELECT *が実際にどのように機能するのですか
// The joins might not make sense I took the database name out, since it is
// the same as the company I work for...
$querySyntax = "SELECT
idAccount,
FirstName,
LastName,
Email,
Phone,
CCCity,
CCState
FROM
account Right Join
states On account.CCState =
states.ID WHERE ";
$cols = $dbo->query("SELECT * FROM account");
$colcount = (count($cols) > 0 ? $cols->columnCount() : count($cols));
for ($ii=0; $ii < count($search); $ii++) {
if ($ii>0)
$querySyntax = $querySyntax . " AND ";
$querySyntax = $querySyntax . "(";
for ($i=0; $i<$colcount; $i++) {
if ($i>0)
$querySyntax = $querySyntax . " OR ";
$meta = $cols->getColumnMeta($i);
$colNames[$i] = $meta['name'];
$querySyntax = $querySyntax . $colNames[$i] . " LIKE '%" . $search[$ii] . "%'";
}
$querySyntax = $querySyntax . ")";
}
$querySyntax .= " LIMIT 50";
$found = $dbo->query($querySyntax);
for($i=0; $row=$found->fetch();$i++) {
$result[$i] = $row;
}
[OK]を、それと言っている:ジョン・アンダーソンと[email protected]の電子メールアドレス、「とは」アンダーソンと[email protected]
クエリは次のようになりますが、一致します"SELECT * ..."クエリよりも列名を取得する方が良い方法はありますか?
SELECT *を実行すると、実際には各レコードがメモリに読み込まれて格納されますか?私たちが持っている何千ものレコードがデータベースに取り込まれると、これは非常に遅くなる可能性があります。
であるべき。 – jValdron
列のリストの後にある場合は、単に「制限1」を使用して単一のレコードを取得するだけでは、メタデータが必要な場合はすべてのレコードを返す必要はありませんか? – dougajmcdonald
問題が発生するまでパフォーマンスを心配しないでください。それまでは、製品をドアの外に出すなど、もっと重要なことに重点を置いています。 – cdeszaq