Мне кажется, я понимаю проблему сейчас. Входные данные определяют, какие цвета связаны с какими другими цветами, а результаты представляют собой список связанных цветов.
// Build a list of distinct colours
var allColours = input.SelectMany(x => x.Select(y => y)).Distinct();
foreach (var colour in allColours)
{
// Find all colours linked to this one
var linkedColours = input.Where(x => x.Contains(colour)).SelectMany(x => x.Select(y => y)).Distinct().ToList();
// See if any of these colours are already in the results
var linkedResult = results.FirstOrDefault(x => x.Any(y => linkedColours.Contains(y)));
if (linkedResult == null)
{
// Create a new result
results.Add(linkedColours);
}
else
{
// Add missing colours to the result
linkedResult.AddRange(linkedColours.Where(x => !linkedResult.Contains(x)));
}
}
Почему выполненный единый запрос, когда изображение стоит тысячу слов!
Я предпочитаю выполнять свободно avaialable Отчеты Панели инструментов Производительности.
Они предоставляют полный обзор снимка Вашей производительности серверов в секундах. Можно затем выбрать определенную область, чтобы заняться расследованиями (блокировка, в настоящее время рабочие запросы, ожидать запросы и т.д.) просто путем нажатия на соответствующую область на Панель инструментов.
Один небольшой протест, я полагаю, что они только доступны в SQL 2005 и выше.
sp_who
http://msdn.microsoft.com/en-us/library/aa260384 (SQL.80) .aspx
Я хочу видеть, "кто", что машины/пользователи выполняют что запросы, отрезок времени, и т.д. Я могу также легко просканировать для блоков.
Если что-то блокирует набор других транзакций, я могу использовать spid для издания команды уничтожения при необходимости.
Пользовательский запрос, который комбинирует то, что Вы ожидали бы в sp_who с DBCC INPUTBUFFER (spid) получать последний текст запроса на каждом spid, заказанном, блокировал/блокировал график.
Обработайте данные, доступно через ведущее устройство.. sysprocesses.
sp_who_3 - Предоставляет большую информацию, доступную в другом месте, но в одном хорошем выводе. Также имеет несколько параметров для разрешения настроенного вывода.
sp_who3 возвращает вывод standand sp_who2, пока Вы не указываете определенный spid, затем дает 6 различных recordsets, о которых spid включая блокировки, блоки, что он в настоящее время делает, T/SQL, который он выполняет, и оператор в T/SQL, который в настоящее время работает.
У Ian Stirk есть большой сценарий, который мне нравится использовать, как детализировано в этой статье: http://msdn2.microsoft.com/en-ca/magazine/cc135978.aspx
В частности, мне нравятся недостающие индексы один:
SELECT
DatabaseName = DB_NAME(database_id)
,[Number Indexes Missing] = count(*)
FROM sys.dm_db_missing_index_details
GROUP BY DB_NAME(database_id)
ORDER BY 2 DESC;
DBCC OPENTRAN для наблюдения, какова самая старая активная транзакция
Информация о дисплеях о самой старой активной транзакции и самых старых распределенных и нераспределенных копируемых транзакциях, если таковые имеются, в указанной базе данных. Результаты отображены, только если существует активная транзакция или если база данных содержит информацию о репликации. Информационное сообщение отображено, при отсутствии активных транзакций.
сопровождаемый sp_who2
Я использую запросы как те:
Количество открытых / активных соединений в SQL-сервере мс 2005