|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - Индексы, Состовные первичные ключи, Индексация представлений |
|
|
MSFT SQL Server - Индексы, Состовные первичные ключи, Индексация представлений
|
Пользователь Сообщения: 124 |
Здравствуйте, уважаемые программисты
![]() Подскажите пожалуйста, как быть в такой ситуации: У меня в БД есть таблицы где 20 000 записей, причем ежедневно добавляются новые записи и также осуществляется выборка данных в виде отчетов. 1) Можно ли создавать индексы в ежедневно обновляемые таблицы или лучше воспользоваться индексированным представлением? 2) Нужно ли делать первичным ключом автоинкремент? Понимаю что трудно ответить не видя БД, подскажите пожалуйста где можно почитать просто и доступно об индексации? Заранее большое спасибо. |
|
Отправлено: 15:39, 24-02-2011 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Цитата zvezda_t:
Цитата zvezda_t:
Почитать можно на oszone.net - Статьи по MS SQL (http://oszone.net/4482/Microsoft_SQL_Server) |
||
------- Отправлено: 01:44, 25-02-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 124
|
Профиль | Отправить PM | Цитировать Вот ведь везде пишут, что:
Цитата:
Провела анализ запросов с помощью "Помощника по настройке ядра СУБД" (используя SQL Server Profiler, создала XML-файл трассировки (test.xml), в которую вошли команды Select, Insert и Update. А потом с помощью "Помощника по настройке ядра СУБД" провела анализ, указав в качестве файла рабочей нагрузки test.xml. (кстати это не может изменить мою БД? Команды Insert и Update, при анализе не будут же реально выполняться? ) В итоге рекомендаций по созданию индексов не было. А вот когда анализировала только команды Select, мне вышел в отчете список некластерных индексов, которые желательно создать. Как же быть? |
|
Отправлено: 07:39, 25-02-2011 | #3 |
Пользователь Сообщения: 124
|
Профиль | Отправить PM | Цитировать И еще позвольте вопрос.
В свойствах индекса, смотрю раздел - Фрагментация. Заполненность страниц(средний процент полных страниц): 88.11% Общая фрагментация(процент логической фрагментации, для индекса Heap =0%): 66.67% Эти параметры плохие? (мне на курсах говорили что процент фрагментации дб<30% так ли это? ) |
Отправлено: 09:37, 25-02-2011 | #4 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата zvezda_t:
|
||
Отправлено: 10:42, 25-02-2011 | #5 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Согласен с Busla, 20 000 - это мизер для современного железа. Я думаю, что индексация, что представления в данном случае будут работать одинаково. Единственно, можно составить пропорцию соотношения Select и Update/Insert. Если больше выборок, выбираем одно, больше вставок/обновлений - другое.
В любом случае, прироста(да и падения) производительности не будет при таких объемах. |
------- Отправлено: 13:17, 25-02-2011 | #6 |
Пользователь Сообщения: 124
|
Профиль | Отправить PM | Цитировать Еще вопрос появился
![]() Уважаемые программисты, как по вашему что правильнее: в таблице Users id series number lastname name ... 1) Сделать первичным ключом автоинкремент(id) и написать уникальный индекс по полям series,number (паспорт) 2) Написать составной первичный ключ по полям: series,number ? (у меня Microsoft SQL Server 2005) |
Отправлено: 12:25, 01-03-2011 | #7 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать 1. Делешь ID первичным ключем с автоинкрементом
2. Делаешь уникальный индекс по полям паспорта. Таким образом, ты сможешь по ID всегда найти нужную запись + избавишься от проверки внесения дублированных записей по паспорту. |
------- Отправлено: 01:01, 02-03-2011 | #8 |
Пользователь Сообщения: 124
|
Профиль | Отправить PM | Цитировать А если у меня совсем нет выборки по id, а всегда поиск по полям series+number. В этом случае нужен первичный ключ по id? сортировка по id увеличит быстродействие в любом случае? или будет лучше сделать только уникальный индекс для series+number?
|
Отправлено: 08:00, 02-03-2011 | #9 |
Пользователь Сообщения: 124
|
Профиль | Отправить PM | Цитировать Уважаемые программисты, разрешите пожалуйста еще вопрос:
итак у меня Microsoft SQL Server 2005. В таблице dbo.kladr (кладр) для поля code создала уникальный, некластеризованный индекс. измеряю время выполнения запросов: 1) [sql]SELECT * FROM dbo.kladr WHERE (CODE LIKE '__00000000000') ORDER BY name[/sql] t=0,2626 2) [sql]SELECT * FROM dbo.kladr WHERE right(CODE, 11) = '00000000000' ORDER BY name[/sql] t=0,1286 Почему второй запрос быстрее? ведь когда CODE вычисляемое значение, индекс не работает, а значит и запрос дб медленнее, разве нет? |
Отправлено: 14:44, 02-03-2011 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Индексы (оценка) производительности системы | Blast | Microsoft Windows Vista | 90 | 20-11-2013 22:56 | |
[решено] Индексы образов | Bond01 | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 2 | 19-08-2010 16:47 | |
Установка - [решено] Как удалить ненужные индексы образов из WIM файла? | CyberStyLe | Microsoft Windows Vista | 0 | 18-10-2009 10:43 | |
Установка - [решено] где хранится первичные настройки ввода клавиатуры для новых пользователей | r_zorge | Автоматическая установка Windows 2000/XP/2003 | 3 | 12-09-2009 12:55 | |
Индексы на видеокартах.... | FRZ | Хочу все знать | 3 | 26-02-2007 22:39 |
|