powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Индекс по первичному ключу в таблице БД
16 сообщений из 16, страница 1 из 1
Индекс по первичному ключу в таблице БД
    #40143037
Soft54
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста когда имеется смысл строить индекс по столбцу, который является первичным ключом в таблице? Особенно для СУБД Sybase SQL Anywhere.
Я, в настоящее время, не строю, но стал сомневаться, особенно для таблиц, которые участвуют в соединениях с друг с другом (вторичный ключ с первичным ключом). Если подумать, то таблица не всегда содержит много строк, например справочные таблицы используемые для заполнения столбцов в другой таблице, поэтому первичный ключ не всегда должен быть проиндексирован самой СУБД по умолчанию
...
Изменено: 14.03.2026, 15:41 - Soft54
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143038
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Soft54 [игнорируется] 

В большинстве СУБД если какое-то поле таблицы обозначено как первичный ключ, по нему не только автоматически формируется индекс, но ещё и физически записи упорядочиваются по этому полю. Поэтому отдельно строить ещё один индекс по этому полю смысла нет.
...
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143045
Soft54
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garya [игнорируется] 
Каким образом можно получить информацию о том строит ли конкретная СУБД автоматически ("скрытый от пользователей") индекс по первичному ключу из приложения (не изучая документации по СУБД)? Может быть из системных таблиц (метаданных) это можно узнать?
...
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143046
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Soft54 [игнорируется] 

Про PowerBuilder я ответить не могу. Я с ним не работал.
...
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143048
Фотография Green2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Soft54  15.03.2026, 09:19
[игнорируется]
Garya [игнорируется] 
Каким образом можно получить информацию о том строит ли конкретная СУБД автоматически ("скрытый от пользователей") индекс по первичному ключу из приложения (не изучая документации по СУБД)? Может быть из системных таблиц (метаданных) это можно узнать?
Это из документации по базе данных можно узнать.
Просто точно задайте вопрос, и узнаете.
...
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143054
NaDivane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garya  14.03.2026, 16:38
[игнорируется]
В большинстве СУБД если какое-то поле таблицы обозначено как первичный ключ, по нему не только автоматически формируется индекс, но ещё и физически записи упорядочиваются по этому полю.
Я не все СУБД "щупал", но пока не встречал СУБД, которые автоматом создает кластерные индексы, подскажите для информации какие СУБД автоматом создают кластерные индексы...
...
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143055
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NaDivane  16.03.2026, 10:53
[игнорируется]
Я не все СУБД "щупал", но пока не встречал СУБД, которые автоматом создает кластерные индексы, подскажите для информации какие СУБД автоматом создают кластерные индексы...
Например, MS SQL автоматически создаёт кластерный индекс по полю, которое указано как Primary Key таблицы.
Поскольку данные остальных полей хранятся в иерархической структуре в виде B-дерева, это не приводит к существенному снижению быстродействия при добавлении/удалении или модификации записей таблицы.
...
Изменено: 16.03.2026, 11:20 - Garya
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143056
NaDivane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Soft54  14.03.2026, 15:19
[игнорируется]
но стал сомневаться, особенно для таблиц, которые участвуют в соединениях с друг с другом (вторичный ключ с первичным ключом). Если подумать, то таблица не всегда содержит много строк
ИМХО имеет смысл. Даже если справочная таблица небольшая.
Soft54  14.03.2026, 15:19
[игнорируется]
Особенно для СУБД Sybase SQL Anywhere.
Походу вы старой версией SQL Anywhere пользуетесь. Старые версии не создают индекс по умолчанию на первичные и внешние ключи. Новые версии (могу ошибаться) начиная с 10-ой, точно с 11-ой автоматически создают индекс на первичные и внешние ключи. Рекомендую использовать более новые версии.
...
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143059
NaDivane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garya  16.03.2026, 11:17
[игнорируется]
Например, MS SQL автоматически создаёт кластерный индекс по полю
Так и знал что это будет ненавистный мною MS SQL ))
Имхо, создавать кластерный индекс по умолчанию, еще тот вариант. Наверное есть смысл если для разработки используешь ORM.
...
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143072
Soft54
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что я нашел в документации Sybase SQL Anywhere:

"If a column is already a primary key or foreign key, searches will be fast on this column because SQL Anywhere has facilities to optimize searches on these key columns. Thus, creating an index on a key column is not necessary and generally not recommended. If a column is only part of a key, an index may help."

Спасибо за участие в дискуссии ))
...
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143074
Soft54
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NaDivane [игнорируется] 

Вы правы, я пользуюсь версией 5.5 (Sybase SQL Anywhere Database Engine Version 5.5). Причин несколько: 1) У меня есть лицензионный ключ, 2) Версия устойчива к сбоям оборудования, к внезапному выключению электричества без резервного источника, способность самостоятельно восстанавливаться (тут важен личный опыт), 3) У пользователей моей программы она уже установлена, это важно при обновлении, 4) Мне нравиться ее компактность, малый размер, скромные требования к компьютеру. В общем согласен с тем, что уже пара перейти на более позднюю версию, например на восьмую хотя бы!
...
Изменено: 17.03.2026, 11:15 - Soft54
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143109
NaDivane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Soft54  17.03.2026, 11:10
[игнорируется]
Причин несколько: 1)... 2)...
Дополню свой ответ, старый версии такие как 5.5, 6, и др. не создают индекс по первичным и внешним ключам по умолчанию, так же не создают скрытых первичных ключей, но! Данные в этих версиях хранятся в порядке сортировки по первичному ключу (кластерный индекс). У кластерных индексов есть как свои плюсы так и минусы.

Что касается остального, я думаю что:
1. Лицензионный ключ в нынешней ситуации ничего не дает.
2. С отказоустойчивостью тут все отлично. Особенно респект за mirror log, простейший и эффективный механизм.
3. Тут непонятно, вы скорее всего вы имели ввиду обновить ODBC драйвер?
4. Будущие версии не сильно разрослись по нынешним меркам, и по требованиям тоже, но поддержка x64 и полная поддержка UTF в более новых версиях, для меня критично, для кого-то еще важны такие плюшки как встроенный HTTP/HTTPS сервер, JSON, XML...

Если обновляться, то минимум на 11. Улучшенный движок который может задействовать больше ядер. Крутой оптимизатор и куча др. плюшек с простейшим понятным и логичным управлением.
...
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143111
Soft54
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NaDivane [игнорируется] 
Благодарю за замечания и советы ))
...
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143112
Soft54
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NaDivane [игнорируется] 

Для меня особенно важно если бы клиент мог связаться с СУБД и соединится с базой данных по сети Интернет без дополнительных настроек и программ. Клиент даже для версии 5.5 сам находит сервер по его имени (без указания его IP адреса) в локальной сети, было бы здорово это делать и в сети Интернет хотя бы по белому IP адресу сервера.
...
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143113
NaDivane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASA (SQL Anywhere) сервер "звенит" на всю сеть, оповещая что работает по такому-то адресу и порту, broadcating, рассылает анонс, поэтому и клиент в пределах данной сети находит сервер без указания Ip или имени сервера.
Soft54  20.03.2026, 13:07
[игнорируется]
NaDivane [игнорируется] Для меня особенно важно если бы клиент мог связаться с СУБД и соединится с базой данных по сети Интернет без дополнительных настроек и программ. Клиент даже для версии 5.5 сам находит сервер по его имени (без указания его IP адреса) в локальной сети, было бы здорово это делать и в сети Интернет хотя бы по белому IP адресу сервера.
Да без проблем.
При наличии белого ip, хоть через порт mapping в лоб к БД, 5 минут делов, и сервер БД во внешке, что крайне не рекомендую.
Лучше по VPN но сложно настраивать со стороны сервера, и чуть у клиента.
Оптимальный и рекомендованный метод, реализованный в новых версиях PB, возможность использовать RESTApi протокол посредством доступа по https. Чуть придется поработать ручками, переписать немного кода. Но плюсы перевешивают затраты.
...
Рейтинг: 0 / 0
Индекс по первичному ключу в таблице БД
    #40143117
Soft54
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NaDivane [игнорируется] 

Благодарю за пояснения! Хорошо, что есть несколько решений для соединения с сервером через Интернет ))
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Индекс по первичному ключу в таблице БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]