Могу ли я улучшить время отклика SQL?

#sql-server-2008

#sql-server-2008

Вопрос:

Я выполняю запрос, который получает некоторые данные с удаленного сервера.

Это простой запрос select, скажем

 select * from opendatasource(----).[Database].[dbo].[Table1]
  

Теперь таблица 1 (имеет 4 столбца) содержит 15 сотен тысяч записей и увеличивается в размере.

На моем сервере, где я получаю результирующий набор запроса, получение данных занимает около 6 секунд. Мне это кажется медленным.

В Table1 есть поле первичного ключа типа данных char (28), и никакой другой индекс любого вида не определен.

Похоже, это проблема.

Какой может быть возможный обходной путь для ускорения работы базы данных?

Помощь приветствуется

Спасибо

Комментарии:

1. Какой источник в OPENDATASOURCE ?

2. Какова сетевая задержка между компьютерами (т. Е. Откуда вы запускаете SQL и сервер БД)?

3. Статистика клиента на сервере показывает следующую выходную сетевую статистику — Количество обходов сервера 1, пакеты TDS, отправленные с клиента 1, пакеты TDS, полученные с сервера 304, Байты, отправленные с клиента 364, байты, полученные с сервера 1243384, Статистика времени Время обработки клиентом 3728, общее время выполнения 5451, время ожидания ответов сервера 1723

4. Вы должны быть в состоянии сократить «время ожидания ответов сервера», переместив клиент ближе к серверу на сетевое расстояние (задержка TCP в обе стороны); для сокращения «времени обработки клиентом» вам нужно будет сузить область возврата результатов только до полей и строк, к которым вы должны запросить.

Ответ №1:

Вы извлекаете целую таблицу. Я не думаю, что вы можете сделать это быстрее.

Если не:

  • вы фильтруете количество извлеченных строк ( where условие)
  • добавьте индекс, охватывающий ваше where условие
  • ограничить количество возвращаемых полей ( select field1, field2 vs select * )
  • получите более быстрое соединение между клиентом (где бы вы ни запускали скрипт) и сервером