SQLITE: замена сильно избыточного индекса на другую таблицу - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть таблица t с 500 000 строк.Один из столбцов (stringtext) содержит очень длинную строку, и я обнаружил, что на самом деле существует только 80 различных строк.Я хотел бы очистить таблицу t, переместив строки в отдельную таблицу s и просто сославшись на них в t.

. Я создал отдельную таблицу длинных строк, включаячто такое явный номер индекса строки с использованием:

CREATE TEMPORARY TABLE stmp AS
  SELECT DISTINCT
    stringtext
  FROM t;
CREATE TABLE s AS
  SELECT _ROWID_ AS stringindex, stringtext
  FROM stmp;

(это создавало эту таблицу, которая показала мне, что было только несколько различных строк).

Как теперь я могу заменить stringtextв t с соответствующим индексом строки из s?

1 Ответ

0 голосов
/ 20 февраля 2019

Я бы подумал о чем-то вроде Update t set stringtext = (select stringindex from s where s.stringtext = t.stringtext) и рекомендовал бы сначала создать индекс на s(stringtext), поскольку SQLite может быть недостаточно умен для построения временного индекса.И тогда ВАКУУМНЫЙ будет в порядке.

Не проверено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...