Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 03.11.2015 12:59:29

Медленные запросы к БД, при выборке множества данных по перв.ключам

Есть подключение ко второй БД, она находиться на том же сервере что и основная БД Laravel и собственно сам фреймворк. Если делать прямыми запросами PDO (банальный php-скрипт), а не через Laravel - все быстро очень быстро работает.
А вот через Laravel с каким-то тормозом примерно в 40мс.

Подробности:
Есть таблица городов, из нее по полю ID (primary key) вытаскиваются значения нескольких полей (поля varchar(от 50 до 200 размер)):

SELECT id, name, data1, data2, data3 FROM city WHERE id IN (1,2,3,4,5,6,7,8,9,10)

Запрос выполняется примерно 40-42мс.

Если в запросе передать меньшее кол-во ID, то запрос выполняется за сотые доли миллисекунды:

SELECT id, name, data1, data2, data3 FROM city WHERE id IN (1,2,3,4,5)

Как будто у Laravel есть некий буфер, при переполнении которого запрос по какой-то причине работает медленнее.

Если сделать выборку данных из таблицы по очереди:

SELECT id, name, data1, data2, data3 FROM city WHERE id = 1
SELECT id, name, data1, data2, data3 FROM city WHERE id = 2

...

SELECT id, name, data1, data2, data3 FROM city WHERE id = 10

то они выполняются также быстро, за сотые доли.

Это противоречит законам оптимизации запросов, когда быстрее сделать один запрос с выборкой по перечислению ID.

Пробовал 3 разными способами:

  1. Чистый класс PDO

  2. Класс Laravel "DB" (функции: getPdo(); prepare(); execute(); и все такое)

  3. Laravel "query builder"

Измерял с помощью debugbar https://github.com/barryvdh/laravel-debugbar

Не в сети

Подвал раздела