sqlite,在大型数据库中重新索引表的方法
我有一个数据库,其中有一个表sqlite,在大型数据库中重新索引表的方法,sqlite,Sqlite,我有一个数据库,其中有一个表my_table,由两亿行组成。它的结构如下: index1 | column_one ______ _______ 0 |AA 1 |AB 2 |CD 3 |FFF 4 |AA ... |... 2902 |TF .... |... 我在这里面临的问题是,数据库非常庞大,需要几分钟才能完成所需的操作。我发现如果我能重新索引我的表,我可以更快地完成这项工作,例如: reindex | index1
my_table
,由两亿行组成。它的结构如下:
index1 | column_one
______ _______
0 |AA
1 |AB
2 |CD
3 |FFF
4 |AA
... |...
2902 |TF
.... |...
我在这里面临的问题是,数据库非常庞大,需要几分钟才能完成所需的操作。我发现如果我能重新索引我的表,我可以更快地完成这项工作,例如:
reindex | index1 | column_one
_________ ______ _______
0 | 0 |AA
1 | 1 |AB
2 | 2 |CD
3 | 3 |FFF
0 | 4 |AA
... | ... |...
8 | 2902 |TF
.... | .... |...
这个“重新编制索引”的值将真正节省我的时间,因为它让我可以选择在毫秒内接收表中所需的信息,这正是我所需要的。但考虑到这个表有2亿行,并且内存非常有限,我现在看不到任何解决方案
只是想看看我有多少不同的分类器和column\u one
:
SELECT count(distinct column_one) from my_table;
需要两分钟:)可以通过计算所有较小的值来计算此数字:
UPDATE MyTable
SET reindex = (SELECT COUNT(DISTINCT column_one)
FROM MyTable AS T2
WHERE T2.column_one < MyTable.column_one);
…然后使用列表中的索引更新每个此类值的表格。1)您执行什么
选择
或其他“需要的操作”?2) 你的表有索引吗?@LutzHorn。它的结构和上面写的一样。我使用python数据库,在这里我做进一步的数据操作。但要做到这一点,我需要以一种重新编制索引的方式进行结构。您是否有一个on列_one
?有多少个不同的值?这些列表是否可以放入内存?@LutzHorn我现在已经添加了一个,但我如何才能访问索引值。。。正如文档所说,您只能使用IndexName编制索引。我一直在使用它,我认为它会起作用。非常感谢。
SELECT DISTINCT column_one
FROM MyTable
ORDER BY column_one;