SQLite3 оптимизация хранения (sqlite3, sqlite, sql, базы данных)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
Аватара пользователя
tonchikp
Сообщения: 15
ОС: Linux

SQLite3 оптимизация хранения

Сообщение tonchikp »

Уважаемые форумчане! Требуется ваша помощь!

Есть таблица-словарь SQLite3, где перечисляется что-то (не важно что, суть не в этом)

Ранее создавал так:

Код: Выделить всё

CREATE TABLE table (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    obj TEXT UNIQUE
);


Задумался, ведь тут по сути 3 поля с UNIQUE (rowid, id, obj), 2 с AUTOINCREMENT (rowid, id). Получается дублируются роли полей, выполняется возможно ненужная работа, нерациональность. Насколько я понимаю PRIMARY KEY в себе несёт UNIQUE и NOT NULL.

Может лучше так:

Код: Выделить всё

CREATE TABLE table (
    obj TEXT PRIMARY KEY
) WITHOUT ROWID;


Подскажите пожалуйста, какие могут быть подводные камни нового подхода? Иными словами, какие минусы?
Изучаю Python3. Добавляйтесь в друзья: tonchikp@jabberon.net
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: SQLite3 оптимизация хранения

Сообщение bormant »

Подумайте, сколько будет весить текстовый индекс в отличие от числового, сколько будет обрабатываться...
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: SQLite3 оптимизация хранения

Сообщение NickLion »

Зависит от задач. Если есть другие таблицы связанные с данной, то bormant прав, лучше оставить связь по INTEGER полю — JOIN'ы быстрее и с меньшими затратами будут обрабатываться.
Если же вы всегда ищете по obj (например, извне приходят) и нет связей с другими таблицами по PRIMARY KEY, то хранить дополнительно id не имеет смысла.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: SQLite3 оптимизация хранения

Сообщение serzh-z »

tonchikp
Это же встраиваемая СУБД... Какая, нафиг производительность, какие JOIN... =) Если OBJ на самом деле уникален, то его вполне можно использовать и на заморачиваться с ID. Оверинжиниринг уже не в моде.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: SQLite3 оптимизация хранения

Сообщение Bizdelnick »

serzh-z писал(а):
27.08.2017 23:34
Оверинжиниринг уже не в моде.

Прально, тяп-ляп и в продакшн, а то развели тут кнутовщину какую-то!
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить