Я использую большой выбор в нескольких таблицах, где у меня много строк, я должен сказать вам, что таблица не связана. Мне нужно извлечь каждый из них и добавить в массив.Mysql: Лучшая практика для извлечения не связанных данных в multiTable
Моя проблема:
Когда я использую это:
mysql> select w.*,s.*,p.*,h.*,c.*,b.*,o.* from
`base` b,`chain` c,`house` h,
`option` o,`piece` p,systems s,
`wall` w;
Иногда я получил это после выполнения запроса:
ERROR 2008 (HY000): MySQL client ran out of memory
Это займет около 1minutes, чтобы выполнить эту функцию и что-то вроде 1min40 для результата массива выборки.
И после этого, мне нужно использовать что-то вроде:
$base = $chain =
$house = $option=
$piece= $systems =
$wall = array();
while($row = $data->fetch_array(MYSQLI_ASSOC)) {
//build all array properly
}
это можно сократить выполнение времени? Лучше использовать 1 запрос для каждой таблицы, которую мне нужно извлечь, и нажать строку в «хороший» массив?
Благодаря
** EDIT **
Я также попытался это, но samething:
mysql> select w.*,s.*,p.*,h.*,c.*,b.*,o.* from
`base` b INNER JOIN `chain` c INNER JOIN `house` h INNER JOIN
`option` o INNER JOIN `piece` p INNER JOIN systems s INNER JOIN
`wall` w;
Вы просто пытаетесь получить все данные из каждой из этих таблиц или есть веская причина, по которой вы используете декартовое соединение? –
Извините, я хочу получить таблицу 1, помещенную в массив 1, все строки, все столбцы, таблицу 2 в массив 2 ... и т. Д. Я не уверен, что если запрос 7 или 8 раз больше, или мне нужно свести к минимуму его. Но мой текущий SQL использует много памяти и требует времени. –