Когда я вошел в свою текущую (работодатель) компанию, была разработана новая схема базы данных, которая будет основой многих будущих инструментов, которые будут / будут создаваться.
С моим ограниченным знанием SQL я думаю, что таблица довольно хорошо разработана.
Меня беспокоит только то, что почти каждая таблица имеет первичный ключ, состоящий из нескольких частей. У каждой таблицы есть как минимум CustomerId и собственный ключ. Хотя они действительно являются определяющими для определенной записи, у меня есть ощущение, что несколько клавиш (здесь мы говорим о четверке) очень неэффективны.
Сегодня я наблюдал невообразимое использование ЦП над простым повторяющимся запросом, который объединяет две таблицы, выбирает одно строковое поле из первой и отличает их.
select distinct(f.FIELDNAME) as fieldName
from foo f
inner join bar b
on f.id = b.fId
where b.cId = @id;
Проверка плана выполнения (я не герой EP) Я заметил, что есть три основных момента процессора. Отличный (как и ожидалось) и два стремятся к индейцам.
Лично я считаю, что поиск индексов должен быть очень быстрым, но они занимают 18% от стоимости каждого. Это нормально? Это связано с (четырехкратными) кластерными индексами?
- ОБНОВЛЕНИЕ -
Запрос используется для создания индекса Lucene. Это однократная обработка, которая происходит примерно еженедельно (я знаю, это звучит противоречиво). Я не могу повторно использовать результаты здесь, насколько я вижу.