Выполнение SQL-запроса занимает много времени - PullRequest
0 голосов
/ 18 февраля 2011
USE Pooja
GO
----Create TestTable
CREATE TABLE TestTable(RtJobCode VARCHAR(20), RtProfCode smallint,RtTestCode smallint,ProfCode smallint,TestCode smallint)
----INSERT INTO TestTable using SELECT
INSERT INTO TestTable (RtJobCode, RtProfCode,RtTestCode,ProfCode,TestCode)
SELECT RtJobCode,RtTestCode,TestCode,RtProfCode,ProfCode
FROM dbo.ResultTest,dbo.Test,dbo.Profiles
WHERE RtTestCode=ANY(Select TestCode from dbo.Test)

----Verify that Data in TestTable
SELECT *
FROM TestTable

GO

Приведенный выше код пытается извлечь записи из таблицы с именем resutltest, а также профили и тесты,

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

Rttestcode Resulttest является внешним ключом от тестового кода

Ответы [ 2 ]

5 голосов
/ 18 февраля 2011

Ваш запрос очень медленный, потому что он создает декартово произведение между ResultTest, Test и Profiles. вам нужно предоставить условия объединения, чтобы связать таблицы вместе.

SELECT RtJobCode
     , RtTestCode
     , TestCode
     , RtProfCode 
     , ProfCode
FROM dbo.ResultTest r 
JOIN dbo.Test t
  ON r.RtTestCode = t.TestCode
JOIN dbo.Profiles p
  ON r.RtProfCode = p.ProfCode 

Я предполагаю, что это запрос, который вы ищете. Обратите внимание на условия, которые связывают ResultTest и Test вместе, а также условие, которое связывает ResultTest и Profiles вместе.

0 голосов
/ 18 февраля 2011
USE Pooja
GO
----Create TestTable
CREATE TABLE TestTable(RtJobCode VARCHAR(20), RtProfCode smallint,RtTestCode smallint,RtCenCode smallint,LabNo int,ProfCode smallint,ProfRate money,ProfName varchar(100),TestCode smallint,TestRate money,TestName varchar(100),TestCategory varchar(50),Cost money)
----INSERT INTO TestTable using SELECT
INSERT INTO TestTable (RtJobCode, RtProfCode,RtTestCode,RtCenCode,LabNo,ProfCode,ProfRate,ProfName,TestCode,TestRate,TestName,TestCategory,Cost)
SELECT RtJobCode
     , RtProfCode
     , RtTestCode
     , RtCenCode
     , LabNo
     , ProfCode
     , ProfRate
     , ProfName
     , TestCode
     , TestRate
     , TestName
     , TestCategory
     , Cost
FROM dbo.ResultTest

JOIN dbo.Test 
  ON ResultTest.RtTestCode = Test.TestCode
JOIN dbo.Profiles 
  ON ResultTest.RtProfCode = Profiles.ProfCode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...