2010-11-14 4 views
2

Я перехожу к приложению, используя обычную базу данных SQLite, с поддержкой полнотекстового поиска. Он имеет несколько столбцов BLOB, которые хранят такие вещи, как цифровые подписи, которые, очевидно, не нужно индексировать. Я читал, что другие люди решают эту проблему, перемещая все данные, отличные от TEXT, в отдельную таблицу, отличную от FTS3, которая, если необходимо, внутренне соединяется с таблицей FTS3, но это очень неэлегантное решение. Нет ли способа просто исключить некоторые индексы из индексации?Как хранить двоичные данные в таблицах SQLite с включенным FTS3?

ответ

0

Это не неэлегантно. SQL является реляционным, объединение является естественной частью жизни. Думая, что они «неэлегантные» - это то, что приводит к стереотипно-белым проектам баз данных.

Вы определили, что у вас есть два разных типа данных - текст, который вам часто нужно искать, а капли - нет. Абсолютно ничего плохого или нецелесообразно хранить в двух разных таблицах.

+0

Я называю это неэлегантным, потому что обычные таблицы позволяют сосуществовать с данными разных типов, не поддерживая разные таблицы, которые вы должны постоянно синхронизировать друг с другом. Это просто не изящно. Вероятно, мне придется полностью реорганизовать мое приложение. Или, по крайней мере, так я беру это от чтения вашего ответа. – 2010-11-14 05:26:45

+0

@oskar: Если вам нужно полностью переустановить приложение, чтобы изменить макет базы данных, вы используете базу данных _very_ неправильно. Разделение нескольких столбцов на отдельную таблицу является чрезвычайно распространенной задачей и должно быть быстрым и безболезненным изменением в любом хорошо разработанном приложении. –

+0

Мне нужно перестроить его в том смысле, что каждый оператор SELECT, который я сейчас должен изменить, должен быть изменен, чтобы включить соединение в другую таблицу, каждый INSERT должен быть изменен для вставки в две отдельные таблицы, и каждый DELETE должен быть изменено для удаления из двух разных таблиц. – 2010-11-14 05:40:01

0

Вы можете сделать это менее хлопот, создав представление о соединении, которое вы затем можете выбрать. Вы все равно можете использовать MATCH в столбцах, которые возникли в таблице fts, и вам не нужно делать это соединение каждый раз, когда вы хотите запросить.

Смежные вопросы