Улучшить производительность самостоятельного соединения в sqlite - PullRequest
1 голос
/ 21 июля 2010

У меня есть таблица с 21 столбцом (все целые числа) id, c1, c2 ... c20 и что нужно получить идентификаторы для строк, которые имеют одинаковые значения в столбцах ...

так строка 1будет соответствовать строке 10, если строка 1 c1 = строка 10 c1 и строка 1 c2 = строка 10 c2 ... и т. д.

Вот как выглядит запрос:

 select r1.id, r2.id 
 from tbl r1, tbl r2  
 where 1=1 and r1.c1=r2.c1 and r1.c2=r2.c2 and 
         ..... r1.c20=r2.c20 and not r1.id=r2.id 

В настоящее время я использую самосоединение, но это слишком медленно (20 секунд для 10000 строк).У меня есть настроенные индексы для столбцов (?) У меня ~ 1 миллион строк. Спасибо

Ответы [ 2 ]

1 голос
/ 21 июля 2010

Возможно, вы захотите создать дополнительный столбец, в котором вы можете хранить хэш всех значений в строке. Затем просто проиндексируйте этот столбец и отфильтруйте строки, соответствующие хэшу из 20 значений, которые вы ищете.

1 голос
/ 21 июля 2010

Вы пробовали один индекс для всех 20 столбцов?

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