Pull to refresh
0
0
Артем Шатов @artshatov

PHP, MySQL

Send message
Тогда все разговоры про оптимизацию, выборки и прочее, является бесконечным и бесполезным холиваром без привязки к конкретной задаче. Что и наблюдается во всех тредах к этому посту.
Никто не говорил, что таблицы не связаны)) Таблицы имеют связь. И делается она не только для того, чтобы обеспечить «связанные» выборки, но и для поддержания этой самой целостности(речь про внешние ключи).
Не понятно, почему способ выборки должен влиять на появление хвостов. Или я не правильные выводы из вашего высказывания выше сделал?
Что вы имеете ввиду под словом «хвосты»?
Нее, не думаю. Кажется имелось ввиду, что там будет какой-нибудь относительный путь.
Почему считаете это предложение уместным?
Предложение принято))
«давайте выберем все строчки со всеми связанными деталями»

Нет. Исходная задача другая. Товар-Цена имеет отношение «один-ко-многим». Нужно получить массив товаров, с полями «цена» и отдать куда-нибудь дальше для вывода-обработки. При этом уберем запросы к бд из цикла. Не больше и не меньше. Условия отбора товаров я оставил за пределами поста.
Кстати, решения дельные.
Нет, я исхожу, что люди предлагают решение, но другой задачи.
Спустя сутки. Такого сильного фидбэка не ожидал. Посмотрите, сколько комментариев выше. И какие решения предлагают — inner join, union, поиск по фаловой системе, кэширование… Похоже всем известное решение, которое применяется ряде ORM, известно только мне, вам и еще нескольким людям) Ну и разрабам этих самых ORM.

Сильный аргумент. Спасибо.

Замечание принято. На открытие не претендовал. Странно, что показалось так.
Добавьте слов, отличных от слова «Нет».
Предлагаю протестить. Уверен, что мой вариант выиграет по скорости.
SQL иньекции в этот вопрос не входит. И в конкретном случае не возможна. Посмотрите внимательно код.
Вы не правы. Массивы в ПХП не сортируются по индексам. Они будут именно в той последовательности в которой вы их в массив положите. Только я отмечу, что обычно массивы обхожу следующим образом:
foreach($products as $product_id => &$product) {
//что-то делаю с proudct...

}
$sql = 'select * from product_price where product_id in (' . implode(',' , $product_ids ). ')';

Пример в статье. Первый кусок кода с запросом в цикле, второй запрос находится вне цикла. Результат в первом случае в базу совершается 8 запросов, во втором 2. И 2 будет независимо от количества товаров.
На месте она останется. На месте…
Собственно, наиболее полно ответили здесь — habrahabr.ru/post/350468/#comment_10696750

1

Information

Rating
Does not participate
Location
Омск, Омская обл., Россия
Date of birth
Registered
Activity