Я создаю несколько запросов AJAX, которые должны собирать данные META (имена столбцов) для запроса одного ввода через несколько столбцов в базе данных ... например, если вы ищете Джон Андерсон и адрес электронной почты [email protected] «и» будет соответствовать Андерсоном и [email protected]MySQL как работает SELECT * в MySQL/Query Efficiency
запрос выглядит следующим образом:
// 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, с этим сказал, является есть лучший способ получить имена столбцов, чем запрос «SELECT * ...»?
Когда вы запускаете SELECT *, он действительно считывает и сохраняет каждую запись в памяти? Это может быть чрезвычайно медленным, как только база данных будет заполнена тысячами записей, которые у нас есть.
Если вы не используете все поля, придерживайтесь назвать их всех, как вы это сделали. – jValdron
Если вы только после списка столбцов, не могли бы вы просто использовать «limit 1», чтобы получить только одну запись, нет необходимости возвращать все записи, если вам нужны только метаданные? – dougajmcdonald
Не беспокойтесь о производительности, пока не сможете _prove_ это проблема. До тех пор сосредоточьтесь на других вещах, которые важнее _now_, например, чтобы получить продукт в дверь. – cdeszaq