Предположим, у меня есть одна таблица, в которой есть 5 столбцов:SQL SERVER Удаление очень большое количество строк оптимизации
Id int primary key
Date datetime
Value double
Fund_id reference
FundModel_id reference
FundDataField_id reference
В этой таблице есть 37 000 000 строк.
Каждый фонд имеет около 4000 строк. Какой лучший и быстрый способ удалить строки из этой таблицы. Мне нужно удалить около 7000000 строк за раз, но это занимает около 10 минут, и мне это очень много.
В настоящее время я удалить строки с помощью Fund_Id, что-то вроде этого:
Delete from FundYearDetail where Fund_id In (2054,2056,2058,2059,2061,2063,2064,2065,2066,2067,2069,2072,2073,2076,2078,2079,2080,2081,2082,
2086,2088,2090,2093,2095,2096,2097,2099,2101,2102,2103,2104,2105,2106,2107,2109,2110,2114,2115,2116,2117,2118,2119,2342,2125,2126,2127,2128,2129,2130,2131)
Это заявление будет поражено около 200 000 строк и займет очень много времени, чтобы закончить, разделив это выражение на 2 запросов я получаю более высокую производительность , около 4 секунд каждый.
Кто-нибудь знает лучшее решение для этого?
Примечание: Я использую Fluent NHibernate для доступа к данным, если кто-то знает лучшее решение, используя Nhibernate, пожалуйста, скажите мне. Что делать, если я сделаю процедуру магазина, это увеличит мою производительность? Спасибо.
Является ли эта операция одноразовая или функция, которую нужно добавить в приложение, чтобы быть повторяемым и выполняются конечными пользователями вашего программного обеспечения? (В любом случае, я, вероятно, не буду использовать NH, предполагая, что вы увлажняете все эти объекты только для их удаления) – Veatch
Ну, я использую NH для доступа к данным в обычных случаях, я хочу удалить все эти строки только потому, что выполняю большие импорт данных из файлов csv, я делаю это с помощью sqlbulkcopy, поэтому перед импортом данных я хочу удалить все строки, которые будут затронуты, а не обновлять их, так как я думаю, что для обновления столько строк потребуется гораздо больше времени, чем вставлять их, используя sqlbulkcopy. – MDDDC
И да, я ищу решение, которое можно повторить, но если у вас есть одно решение времени, пожалуйста, сообщите мне, какой у вас есть, я думаю, вы не будете предлагать воссоздать таблицу ... – MDDDC