Можно ли ускорить sql запрос?
В doctrine:
$this->createQueryBuilder()
->where('field IN (array)')
->setParameter('array', $array)
->andWhere('param = :param')
->setParameter('param', bool)
->select('field')
->getQuery()
->getResult();
один параметр boolean, второй массив, в массиве может быть много значений (от 100 тыс)
Ответы (1 шт):
Автор решения: Александр К
→ Ссылка
Желательно видеть полную структуру таблицы в БД.
Запрос может тормозить из-за отсутствия индекса на поле field и param.
Массив значений в любом случае желательно уменьшить до 500-1000 через чанкование:
$chunks = array_chunk($array, 500);
foreach ($chunk as $chunks) {
$this->createQueryBuilder()
->where('field IN (array)')
->setParameter('array', $chunk)
->andWhere('param = :param')
->setParameter('param', bool)
->select('field')
->getQuery()
->getResult();
// Результат собираем в общий массив
}
Если нужно еще больше ускорить запросы, тогда есть смысл использоать нативные SQL запросы минуя доктрину.