Luiey Ichigo Ответов: 2

Более быстрый запрос к azure SQL с условием с помощью консоли visual basic


Ребята,

Как быстрее запросить и получить результат? Перед этим запросом вполне допустимо подождать. В настоящее время он выполняется в течение 10 минут и все еще запрашивает. Мой запрос состоит в том, чтобы выбрать count из 5 таблиц, расположенных в Azure SQL. Я хочу сделать сравнение данных с локальным сервером SQL.
Dim CommandText As String = "WAITFOR DELAY '0:0:01';SELECT
(SELECT COUNT(*) FROM [dbo].[TableFirst] WHERE LineIDKey=" & idkey & ") as TableFirst,
(SELECT COUNT(*) FROM [dbo].[TableSecond] WHERE LineIDKey= " & idkey & ") As TableSecond,
(SELECT COUNT(*) FROM [dbo].[TableThird] WHERE LineIDKey=" & idkey & ") as TableThird,    
(SELECT COUNT(*) FROM [dbo].[TableForth] WHERE LineIDKey=" & idkey & ") as TableForth,
(SELECT COUNT(*) FROM [dbo].[TableFifth] WHERE LineIDKey=" & idkey & ") as TableFifth"

LineIDKey - это номер.

Я попробовал этот запрос, который нашел в интернете.. Супер-массивный быстрее!
SELECT T.name AS TableName, 
       I.rows AS TotalCount 
FROM   sys.tables AS T 
       INNER JOIN sys.sysindexes AS I 
               ON T.object_id = I.id 
                  AND I.indid < 2
ORDER  BY T.name asc

Но как вставить оператор условия? Этот запрос показывает все таблицы из базы данных. Что Люкс, что я хочу. Ожидая в:-
1. Вставьте условие Где LineIDKey= " & amp; idkey & "
2. захватите строки TableCount и TableName


#Примечание: все таблицы в базе данных имеют столбец LineIDKey

Что я уже пробовал:

Dim CommandText As String = " WAITFOR DELAY '0:0: 01'; SELECT
(Выберите COUNT (*) из [dbo].[TableFirst] где LineIDKey= " & amp; idkey & ") как TableFirst,
(Выберите COUNT (*) из [dbo].[TableSecond] где LineIDKey= " & amp; idkey & ") как TableSecond,
(Выберите COUNT (*) из [dbo].[TableThird] где LineIDKey= " & amp; idkey &") как TableThird,
(Выберите COUNT (*) из [dbo].[TableForth] где LineIDKey= " & amp; idkey & ") как TableForth,
(Выберите COUNT (*) из [dbo].[TableFifth] где LineIDKey= " & amp; idkey &") как TableFifth"



Выберите T.name как имя таблицы,
И. строк отображаются
Из представления sys.столы как Т
Внутреннее соединение sys. sysindexes AS I
Т. аргумента object_id = ИД И.
И я. индид < 2
Заказ по т. наименование АСК

Mehdi Gholam

Попробуйте добавить индекс на LineIDKey

Luiey Ichigo

индекс? как добавить его в текущий запрос, сэр?

Mehdi Gholam

Начните здесь : https://azure.microsoft.com/en-us/documentation/articles/sql-database-advisor/

2 Ответов

Рейтинг:
2
Рейтинг:
0

Patrice T

Вероятно, вам нужно пересмотреть дизайн вашей базы данных, добавив индекс в поле LineIDKey, это значительно улучшит производительность запроса.
Инструкция SQL CREATE INDEX[^]

То, как вы передаете значение idkey в запросе плохо, потому что он открывает дверь для инъекции кода, используйте вместо этого параметр
SQL-инъекция[^]

Этот сайт содержит хорошее туто для SQL
Учебник по SQL[^]


Luiey Ichigo

Я предполагаю что-то плохое, потому что я использую SSMS и экспортирую данные в Azure SQL, но скопированные данные и создание таблиц из LocalSQL не передают первичный и внешний ключ.- это законно, как то, с чем я сейчас сталкиваюсь?

Patrice T

Я знаю SQL достаточно для моего ответа, но не для этого.
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.