Как создать базу данных SQLite без rowid?
Удивитесь, но это написано в документации к SQLite: надо в CREATE TABLE указать.
CREATE TABLE IF NOT EXISTS wordcount( word TEXT PRIMARY KEY, cnt INTEGER ) WITHOUT ROWID; --^^^^^^^ ^^^^^ вот это
У этого есть масса плюсов и минусов, которые расписаны там же. Самое важное:
- В таблице без rowid должен быть первичный ключ.
- AUTOINCREMENT не будет работать.
- sqlite3_update_hook() на таблицы без rowid работать не будет.
- Таблица будет устроена проще, поскольку не будет иметь обязательного индекса с rowid , некоторые виды поиска будут быстрее.
Without rowid sqlite что это
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel
Помог: 3 раз(а)
Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.
Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо
После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..
Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.
Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.
На последок как оно происходит на форумах
Цитата:
Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.
Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12
unixforum.org
SQLite3 оптимизация хранения (sqlite3, sqlite, sql, базы данных)
Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.
Модератор: Bizdelnick
5 сообщений • Страница 1 из 1
tonchikp Сообщения: 15 ОС: Linux
SQLite3 оптимизация хранения
Сообщение tonchikp » 27.08.2017 14:58
Уважаемые форумчане! Требуется ваша помощь!
Есть таблица-словарь 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;
Подскажите пожалуйста, какие могут быть подводные камни нового подхода? Иными словами, какие минусы?
DbcH SQLite
Уже существует немало подобных инструментов для SQLite, в т.ч. свободных, поэтому сразу возникает вопрос:
зачем писать еще один ?
Во-первых, я просто хотел поглубже изучить возможности SQLite — и разработка менеджера баз данных, как мне кажется, неплохой способ.
Во-вторых, меня не устраивают некоторые особенности интерфейса большинства существующих менеджеров. Когда я открываю базу данных, меня в первую очередь интересует, что за данные она содержит — т.е. перечень таблиц и хранящихся в них данных. Многие менеджеры перегружены информацией, они сразу показывают все, что могут — индексы, view, триггеры — все это в дереве ( tree view ) и не сразу бывает понятно, как добраться до главного — до данных. На мой взгляд все эти дополнительные объекты должны быть показаны по моему запросу ( пункт меню, комбинация клавиш ), а не сразу по открытии базы данных, отвлекая от главного.
В-третьих, на момент написания этой программы (декабрь 2014) большинство менеджеров, которые я испробовал, не поддерживали некоторые недавно добавленные особенности SQLite. Они даже отказывались открывать базы данных, содержащие таблицы, созданные «WITHOUT ROWID».
Ну и, наконец, всегда удобно иметь инструмент, в который ты можешь при необходимости добавить любые возможности.
- список таблиц открытой базы данных;
- просмотр/редактирование данных в любой таблице;
- просмотр структуры и др.информации о таблице;
- вывод полной структуры базы данных;
- дамп базы данных;
- просмотр/редактирование параметров (pragmas) базы данных;
- создание таблиц и индексов;
- удаление таблиц и индексов;
- ввод, редактирование и выполнение SQL запросов;
- подсветка синтаксиса SQL запросов;
- автодополнение при редактировании SQL запросов (по клавише TAB);
- сохранение SQL запроса в отдельном файле и загрузка из файла;
- история SQL запросов отдельно для каждой базы данных.
Комментариев: ( ) пред. след. Добавить комментарий
Длина комментария — не больше 4000 символов.
Ваше имя:
Адрес электронной почты:
(не предназначено к показу)
|   | Обновить |