Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - Индексы, Состовные первичные ключи, Индексация представлений

Ответить
Настройки темы
MSFT SQL Server - Индексы, Состовные первичные ключи, Индексация представлений

Пользователь


Сообщения: 124
Благодарности: 2

Профиль | Отправить PM | Цитировать


Здравствуйте, уважаемые программисты

Подскажите пожалуйста, как быть в такой ситуации:

У меня в БД есть таблицы где 20 000 записей, причем ежедневно добавляются новые записи и также осуществляется выборка данных в виде отчетов.

1) Можно ли создавать индексы в ежедневно обновляемые таблицы или лучше воспользоваться индексированным представлением?
2) Нужно ли делать первичным ключом автоинкремент?
Понимаю что трудно ответить не видя БД, подскажите пожалуйста где можно почитать просто и доступно об индексации?

Заранее большое спасибо.

Отправлено: 15:39, 24-02-2011

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата zvezda_t:
Можно ли создавать индексы в ежедневно обновляемые таблицы или лучше воспользоваться индексированным представлением »
В таких случаях я всегда говорю - если есть возможность, попробуй оба варианта по очереди и сравни. Сам увидишь результат.
Цитата zvezda_t:
Нужно ли делать первичным ключом автоинкремент »
А это уже зависит от нужд и принципов работы программы. Как правило, это нужно, но бывают моменты, когда необходимо самому проставлять данные.

Почитать можно на oszone.net - Статьи по MS SQL (http://oszone.net/4482/Microsoft_SQL_Server)

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:44, 25-02-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 124
Благодарности: 2

Профиль | Отправить PM | Цитировать


Вот ведь везде пишут, что:
Цитата:
Индексы повышают производительность операций
выборки, но ухудшают производительность при вы-
полнении таких операций, как добавление данных,
их модификация и удаление
. Вызвано это тем, что
при выполнении подобных операций СУБД должна
еще и динамически обновлять индекс.
А у меня в таблицу в равной степени, и добавляются записи и осуществляется выборка.
Провела анализ запросов с помощью "Помощника по настройке ядра СУБД"
(используя SQL Server Profiler, создала XML-файл трассировки (test.xml), в которую вошли команды Select, Insert и Update. А потом с помощью "Помощника по настройке ядра СУБД" провела анализ, указав в качестве файла рабочей нагрузки test.xml. (кстати это не может изменить мою БД? Команды Insert и Update, при анализе не будут же реально выполняться? )
В итоге рекомендаций по созданию индексов не было.
А вот когда анализировала только команды Select, мне вышел в отчете список некластерных индексов, которые желательно создать.
Как же быть?

Отправлено: 07:39, 25-02-2011 | #3


Пользователь


Сообщения: 124
Благодарности: 2

Профиль | Отправить PM | Цитировать


И еще позвольте вопрос.
В свойствах индекса, смотрю раздел - Фрагментация.
Заполненность страниц(средний процент полных страниц): 88.11%
Общая фрагментация(процент логической фрагментации, для индекса Heap =0%): 66.67%

Эти параметры плохие? (мне на курсах говорили что процент фрагментации дб<30% так ли это? )

Отправлено: 09:37, 25-02-2011 | #4


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Цитата zvezda_t:
У меня в БД есть таблицы где 20 000 записей »
по современным меркам это немного, подозреваю, что на таких объёмах будет даже не отследить разницу в производительности.

Отправлено: 10:42, 25-02-2011 | #5


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Согласен с Busla, 20 000 - это мизер для современного железа. Я думаю, что индексация, что представления в данном случае будут работать одинаково. Единственно, можно составить пропорцию соотношения Select и Update/Insert. Если больше выборок, выбираем одно, больше вставок/обновлений - другое.
В любом случае, прироста(да и падения) производительности не будет при таких объемах.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 13:17, 25-02-2011 | #6


Пользователь


Сообщения: 124
Благодарности: 2

Профиль | Отправить PM | Цитировать


Еще вопрос появился

Уважаемые программисты, как по вашему что правильнее:
в таблице Users
id
series
number
lastname
name
...


1) Сделать первичным ключом автоинкремент(id) и
написать уникальный индекс по полям series,number (паспорт)
2) Написать составной первичный ключ по полям: series,number
?

(у меня Microsoft SQL Server 2005)

Отправлено: 12:25, 01-03-2011 | #7


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


1. Делешь ID первичным ключем с автоинкрементом
2. Делаешь уникальный индекс по полям паспорта.
Таким образом, ты сможешь по ID всегда найти нужную запись + избавишься от проверки внесения дублированных записей по паспорту.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:01, 02-03-2011 | #8


Пользователь


Сообщения: 124
Благодарности: 2

Профиль | Отправить PM | Цитировать


А если у меня совсем нет выборки по id, а всегда поиск по полям series+number. В этом случае нужен первичный ключ по id? сортировка по id увеличит быстродействие в любом случае? или будет лучше сделать только уникальный индекс для series+number?

Отправлено: 08:00, 02-03-2011 | #9


Пользователь


Сообщения: 124
Благодарности: 2

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - Индексы, Состовные первичные ключи, Индексация представлений

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Индексы (оценка) производительности системы 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




 
Переход