Два трюка . В основном, инвертирование HTML-кода ваших желаемых элементов в HTML и использование ~
Оператора следующего сиблинга :
float-right
+ инвертирует порядок HTML элементы
div{ /* Do with the parent whatever you know just to make the
inner float-right elements appear where desired */
display:inline-block;
}
span{
float:right; /* float-right the elements! */
}
span:hover ~ span{ /* On hover target it's "previous";) elements */
background:red;
}
<div>
<!-- Reverse the order of inner elements -->
<span>5</span>
<span>4</span>
<span>3</span>
<span>2</span>
<span>1</span>
</div>
direction: rtl;
+ инвертирует порядок внутренних элементов
.inverse{
direction: rtl;
display: inline-block; /* inline-block to keep parent at the left of window */
}
span:hover ~ span{ /* On hover target it's "previous";) elements */
background:gold;
}
Hover one span and see the previous elements being targeted!<br>
<div class="inverse">
<!-- Reverse the order of inner elements -->
<span>5</span>
<span>4</span>
<span>3</span>
<span>2</span>
<span>1</span>
</div>
Вот решение вашей проблемы.
DECLARE @RC AS INT
SET @RC = -1
WHILE @RC <> 0
BEGIN
DELETE TOP(1000000) FROM [Archive_CBO_ODS].[CBO].[AckItem] WHERE [AckItemId] >= 300
SET @RC = @@ROWCOUNT
--SET @RC = 0
END
, вы можете создавать новые файлы, скопируйте все строки, кроме «удаленных», затем поменяйте местами имена в таблицах. Наконец, отбросьте старые таблицы. Если вы удаляете большой процент записей, это может быть быстрее.
См.: Оптимизация удаления на SQL Server
Эта статья поддержки MS может представлять интерес: Как решить проблемы с блокировкой, вызванные эскалацией блокировки в SQL Server :
Разделите большие пакетные операции на несколько более мелких операций . За Например, предположим, вы выполнили следующий запрос на удаление нескольких сотен тысяча старых записей аудита стол, а затем вы обнаружили, что это вызвал эскалацию блокировки, которая заблокировала другие пользователи:
УДАЛИТЬ ИЗ сообщений журнала, ГДЕ LogDate <'2/1/2002'
Удалив эти записи несколько сто за раз, вы можете резко сократить количество блокировки, которые накапливаются за транзакцию и предотвратить эскалацию блокировки. За пример:
SET ROWCOUNT 500 delete_more: УДАЛИТЬ ИЗ сообщений журнала, ГДЕ LogDate <'2/1/2002' ЕСЛИ @@ ROWCOUNT> 0 НАЙТИ delete_more УСТАНОВИТЬ ROWCOUNT 0
Уменьшите площадь блокировки запроса, сделав запрос столь же эффективным, как возможно. Большие сканы или большие количество просмотров закладок может увеличить шанс блокировки эскалация; кроме того, это увеличивает вероятность тупиковых ситуаций и вообще отрицательно влияет на параллелизм и производительность.
Если вы используете SQL 2005 или 2008, возможно, вам поможет «изоляция моментальных снимков». Он позволяет данным оставаться видимыми для пользователей во время обработки базовой операции обновления данных, а затем показывает данные сразу после их фиксации. Даже если запуск удаления занимает 30 минут, ваши приложения в это время останутся в сети.
Вот краткое руководство по блокировке моментальных снимков:
http://www.mssqltips.com/tip.asp?tip=1081
Хотя вам все же следует попытаться ускорить удаление, чтобы оно происходило как можно быстрее, это может частично облегчить бремя.