Использование WHERE одного конкретного столбца для тайм-аута «Выбор * из таблицы», но другие столбцы могут работать нормально - PullRequest
0 голосов
/ 10 апреля 2019

Я использую ограничение WHERE для одного конкретного столбца Integer, чтобы выполнить запрос SELECT * FROM, но он всегда отключается без каких-либо результатов.Но когда я использую другие столбцы, запрос выполняется нормально.Интересно, почему?

Я не уверен, является ли это причиной того, что конкретный столбец является целым числом?

SELECT [REQUEST_ID], [SIGNUM], [MATNR], [TIMESTAMP]
FROM [TICKET_INFO]
WHERE [REQUEST_ID] = 0

Это не работает и всегда истекает, но этот запрос работает нормально:

SELECT [REQUEST_ID], [SIGNUM], [MATNR], [TIMESTAMP]
FROM [TICKET_INFO]
WHERE [SIGNUM] = '#'

Ответы [ 3 ]

0 голосов
/ 10 апреля 2019

Я подозреваю, что Request_ID будет типом символов, и вы пытаетесь сравнить его с целым числом. Из-за этого он должен привести данные для каждой строки и сделать сравнение.

Я бы посоветовал вам обновить запрос таким образом.

SELECT [REQUEST_ID], [SIGNUM], [MATNR], [TIMESTAMP]
FROM [TICKET_INFO]
where [REQUEST_ID] = '0'

Кроме того, прочитайте этот ответ stackoverflow Приведение целого числа к Varchar

0 голосов
/ 10 апреля 2019

После проверки, заблокирован ли он другими, все соединения с этим сервером спят, что означает, что все соединения в норме. Затем я перезапускаю сервер с помощью Управления конфигурациями, и он может нормально запрашивать. Таким образом, метод RESTART SERVER.

0 голосов
/ 10 апреля 2019

Проблема может быть связана с кэшированным планом запроса, который подходит для некоторых версий параметров, но не для других.Вы можете попробовать шаги, чтобы решить проблему.Сначала перестройте все индексы и убедитесь, что статистика по неиндексам актуальна.Попробуйте следующее:

exec sp_msforeachtable "DBCC DBREINDEX('?')"
go

exec sp_msforeachtable "UPDATE STATISTICS ? WITH FULLSCAN, COLUMNS"
go

Если это не сработает, попробуйте:

  1. Использовать Оптимизировать для
  2. Использовать WITH (RECOMPILE)
  3. Возможно, попробуйте динамический sql (Полезная ссылка здесь )

Ссылка здесь: Время ожидания запроса SQL Server в зависимости от условия Where

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...