Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sqlite,在大型数据库中重新索引表的方法_Sqlite - Fatal编程技术网

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;