ORM и индексы базы данных - PullRequest
1 голос
/ 08 мая 2009

Какой у вас подход к созданию и ведению индексов базы данных при использовании ORM, таких как NHibernate / Hibernate.

Поскольку ORM генерирует запросы, есть ли какие-либо инструменты, которые вы могли бы порекомендовать, которые могли бы проанализировать планы запросов и предложить тип индексов, которые следует создать?

Мой нынешний подход ... ждать, пока что-то работает медленно, а затем найти медленный запрос и оптимизировать его ... но это отчасти неубедительно, не так ли? Моя цель - не получить десятки или сотни индексов, о которых никто не знает, которые на самом деле используются системой, а какие нет. Итак, снова индекс обслуживания.

Моя среда - NHibernate + SQL Server 2005.

Ответы [ 2 ]

1 голос
/ 08 мая 2009

Я считаю, что столбцы, которые нуждаются в индексации, обычно "очевидны". Под этим я подразумеваю, что если вы создаете запросы типа «выберите p из Person p, где p.surname =: surname», тогда независимо от того, на какую фамилию в столбце ссылается, нужен индекс.

Аналогично, каждый внешний ключ должен быть проиндексирован.

И нет, я не жду, пока производительность не станет проблемой. Индексы - это то, что я делаю с самого начала.

О, еще я хотел добавить, что большинство (если не все) ORM имеют возможность включить ведение журнала операторов. Они часто не особенно читаемы (одна строка, имена таблиц t0, t1, t2 и т. Д.), Но это может сказать вам, какие запросы выполнялись и как часто.

0 голосов
/ 08 мая 2009

Стандартные инструменты, которые вы используете для анализа медленных запросов / плохой индексации, применяются независимо от того, используете ли вы ORM. Вы можете использовать SQL Server Profiler для проверки SQL-операторов, работающих с вашей базой данных, а затем использовать функции плана индекса в окне запросов в SQL Server Studio Studio / анализатор запросов SQL Server, чтобы просмотреть подробную информацию о ваших планах запросов и получить представление о какие индексы вам может понадобиться добавить.

Вы также можете использовать помощник по настройке ядра СУБД в sql management studio, хотя вопрос о том, действительно ли этот инструмент более полезен, чем просто потратить некоторое время на размышления о дизайне базы данных и шаблонах запросов, остается под вопросом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...