Почему вы не должны его использовать
Первичный ключ часто индексируется и используется для сортировки. BLOB
не может быть проиндексирован, что делает его самым медленным из всех типов данных. На самом деле это наихудший выбор в качестве первичного ключа, и большинство баз данных, включая стандарт SQL99, запрещают его.
Проблема с BLOB
заключается в том, что его тип данных не известен базе данных (BLOB
следует использовать только для чего-либо неопределенного, например, для логотипа, изображения, текстового документа, которые можно сохранить только как двоичные данные). Следовательно это не может оптимизировать это. Еще одна проблема - дисплей. BLOB-объект не может просто отображаться в виде текста.
Большинство реализаций SQL не позволяют сравнивать поля BLOB
, но SQLite допускает это. Тем не менее, он преобразует все, с чем вы сравниваете его, в большой двоичный объект, а затем сравнивает его по крупицам.
Лучшая альтернатива
Наилучшим вариантом для столбца первичного ключа в SQLite является использование INTEGER PRIMARY KEY
, как описано здесь ;: http://www.sqlite.org/lang_createtable.html#rowid это дает наилучшую производительность (он уже существует как столбец rowid
, это только псевдоним).
Заключение
Чтобы ответить на ваш вопрос: да, это плохо влияет на производительность. Но что еще более важно, это будет очень трудно хорошо управлять вашими столами. Используйте INTEGER PRIMARY KEY
, это действительно лучший, гарантированный уникальный и невероятно быстрый.