![]() |
Модераторы: Akella |
![]() ![]() ![]() |
|
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 1 Всего: 54 |
сделай уникальный индекс по 2 полям
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
olek68 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 16.8.2010 Репутация: нет Всего: нет |
А разве функция индекса не ускорять сортировку поля. Однако не вижу связи с уникальностью полей.… Объясните подробнее…
|
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 1 Всего: 54 |
не только...еще как минимум ускорение поиска... и обеспечение уникальности - это уже скорее побочный эффект индекса -------------------- Кольцов Виктор Владимирович |
|||
|
||||
olek68 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 16.8.2010 Репутация: нет Всего: нет |
В книге Фаронова «Delphi-7 Программирование баз данных” прочёл интересную фразу:
«В реальной работе иногда возникает необходимость вставить в ту или иную таблицу БД сразу множества записей. В этом случае можно временно отключить индекс…». Не представляю как одним «INSERT INTO…» можно вставить несколько записей! О чём говорил автор? Добавлено через 5 минут и 11 секунд Может он говорит о одной транзакции? В которой целая туча INSERT? |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Именно так.
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 1 Всего: 54 |
спорный момент, включив индекс обратно будет выполнятся переиндексация таблицы - это может занять больше времени чем было сэкономлено отключение индекса. Это сообщение отредактировал(а) Frees - 17.8.2010, 17:11 -------------------- Кольцов Виктор Владимирович |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
отнюдь, отключение индекса действительно дает выигрыш по времени, но только при больших объемах (10К не в счет).
olek68, есть подводные камни при временном отключении индекса, если индекс уникален или это внешний ключ. В целом не рекомендую пользоваться данной возможностью. Если в приложении нужно вставить/удалить большой объем данных за короткое время, нужно пересмотреть логику приложения, возможно что-то не так. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 1 Всего: 54 |
суммарное время , включая переиндексацию после включения индекса может быть больше!! или я ошибаюсь? например ситуация когда в таблицу с 10 млн записей добавляем 10 тыс записей? -------------------- Кольцов Виктор Владимирович |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Frees, обо всем по порядку:
1. Про удаление большого кол-ва записей из большой таблицы вот статья 2. Про добавление, правда статья сильно старая и немного о другом, но в конце есть вывод: "Наличие индексов замедляет скорость вставки данных. Более оптимальным по времени может оказаться деактивация индексов, вставка данных, и активация индексов - в сумме эти операции могут занять меньшее время, чем вставка данных с активными индексами." Оригинал Если есть другие мнения и источники, прошу предоставить "тынц" -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 1 Всего: 54 |
тынц нету, то что я писал выше это всеголишь ИМХО -------------------- Кольцов Виктор Владимирович |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Frees, да я без наездов
![]() -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
olek68 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 16.8.2010 Репутация: нет Всего: нет |
Привет знатокам.
Подскажите, пожалуйста, что входит в комплект «минимальной клиентской установки» firebird? И возможно ли обойтись без установки клиентской firebird? Достаточно ли подбросить в каталог с клиентской программой библиотеки fbclient.dll и gds32.dll . Если нет, то, что еще нужно для нормальной работы клиента? (В своей программе я использую стандартные компоненты вкладки «InterBase» Delphi.) Это сообщение отредактировал(а) olek68 - 22.8.2010, 16:42 |
|||
|
||||
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 20 Всего: 329 |
fbclient.dll + msvcp71.dll (или msvcr71.dll, точно не помню) Добавлено через 1 минуту и 29 секунд
По идее да, достаточно. fbclient.dll можно переименовать в gds32.dll, т.к. в твоём случае нет возможности указать путь и имя библиотеки доступа. |
||||
|
|||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
olek68, не совсем понятно, что имеется ввиду под
Далее по правилам форума: во-первых, новая тема = новый топик Во-вторых, учимся пользоваться поиском Вот достаточно полный ответ и след за ним -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
olek68 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 16.8.2010 Репутация: нет Всего: нет |
Большое спасибо, за помощь! Каждый рас, когда обращаюсь на сайт за подсказкой к
специалистам всегда получаю нужную информацию. С firebird работаю недавно и по привычке все запросы к базе формирую с клиентского приложения. Но думаю, может часть объемных запросов выложить в базе в «селективных процедурах», ну чтобы снизить нагрузку на сеть. Может, подскажете насколько необходимо перевести все обращения к базе во внутренние процедуры? Или в этом нет необходимости. Может кто-то даст возможность взглянуть на правильно организованную базу. Не знаю насколько Employee.fdb можно брать за образец. Это сообщение отредактировал(а) olek68 - 26.8.2010, 19:57 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Interbase" | |
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |