@nerabio

Как решить проблему медленного мета запроса Yii2 Active Record?

Добрый день,

Подскажите как решить проблему. Есть SQL Server на нем бд для CRM, при работе с этой бд запросы длятся неприлично долго (на других базах работает быстро). Встроенным дебагером видно, что запрос получающий FK-ключи и имена колонок, отрабатывает 4 секунды, это только к одной таблице. Выполняя этот запрос через Management Studio, время выполнения такое же. Можно ли в Yii2 отключить проверку именно этой связи ключей? Или как выйти из этого положения?

Сам запрос.
SELECT
[rc].[constraint_name] AS [fk_name],
[kcu1].[column_name] AS [fk_column_name],
[kcu2].[table_name] AS [uq_table_name],
[kcu2].[column_name] AS [uq_column_name]
FROM [INFORMATION_SCHEMA].[REFERENTIAL_CONSTRAINTS] AS [rc]
JOIN [INFORMATION_SCHEMA].[KEY_COLUMN_USAGE] AS [kcu1] ON
[kcu1].[constraint_catalog] = [rc].[constraint_catalog] AND
[kcu1].[constraint_schema] = [rc].[constraint_schema] AND
[kcu1].[constraint_name] = [rc].[constraint_name]
JOIN [INFORMATION_SCHEMA].[KEY_COLUMN_USAGE] AS [kcu2] ON
[kcu2].[constraint_catalog] = [rc].[constraint_catalog] AND
[kcu2].[constraint_schema] = [rc].[constraint_schema] AND
[kcu2].[constraint_name] = [rc].[unique_constraint_name] AND
[kcu2].[ordinal_position] = [kcu1].[ordinal_position]
WHERE [kcu1].[table_name] = 'Account' AND [kcu1].[table_schema] = 'dbo'
ae8dda9710864a7ba125f57abab0fff7.jpg
  • Вопрос задан
  • 609 просмотров
Решения вопроса 2
В конфиге бд
'enableSchemaCache' => true,

еще и время можно выставить
'schemaCacheDuration' => 3600,

Обычно на проде ставят. Все мета запросы будут кэшироваться
Ответ написан
Комментировать
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Включите кеширование, указывайте связи в запросах к базе.
'db' => [
            'class' => 'yii\db\Connection',
            'charset' => 'utf8',
            'enableSchemaCache' => true
        ],

$model = Model::find()->with(/* тут связи */)->all()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@yiiworld
- кеширование это конечно хорошо, но 4 сек это не отменяет
- такое ощущение что вашей INFORMATION_SCHEMA не хватает индексов (или с ними проблема)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы