Мне нужен медленный запрос на AdventureWorks (SQL 2005)

Оператор == всегда предназначен для сравнения ссылок на объекты, тогда как метод сравнения строк .equals () переопределяется для сравнения содержимого:

String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2); // It prints false (reference comparison)
System.out.println(s1.equals(s2)); // It prints true (content comparison)
7
задан OMG Ponies 10 September 2009 в 14:42
поделиться

2 ответа

Здесь у вас есть список таблиц базы данных с наибольшим количеством строк:

Tables - Rows count
Sales.SalesOrderDetail - 121317
Production.TransactionHistory - 113443
Production.TransactionHistoryArchive - 89253
Production.WorkOrder - 72591
Production.WorkOrderRouting - 67131
Sales.SalesOrderHeader - 31465
Sales.SalesOrderHeaderSalesReason - 27647
Person.Contact - 19972
Person.Address - 19614
Sales.CustomerAddress - 19220
Sales.Customer - 19185
Sales.ContactCreditCard - 19118
Sales.CreditCard - 19118
Sales.Individual - 18484
Sales.CurrencyRate - 13532

Вы можете попробовать различные варианты, используя эти таблицы. Например, этот запрос:

SELECT * FROM Sales.SalesOrderDetail s
INNER JOIN Production.Product p ON s.ProductID = p.ProductID

выполняется на моем компьютере в течение 9 секунд.

Вы можете запустить это :

SELECT * FROM Production.TransactionHistory th
INNER JOIN Production.TransactionHistoryArchive tha ON th.Quantity = tha.Quantity

Внутреннее соединение для неиндексированных таблиц. Очень искусственный пример, но пока что на прокатку на моей машине уходит более 2 минут. Сейчас - более 20 минут. Сейчас - 1 час 20 минут .

11
ответ дан 6 December 2019 в 23:10
поделиться

попробуйте использовать коррелированный подзапрос для одной из этих таблиц или курсора.

0
ответ дан 6 December 2019 в 23:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: