这与前面的问题类似,但是那里的答案不能满足我的需求,而我的问题稍有不同: 我目前使用gzip压缩包含sorting数据的一些非常大的文件。 当文件未被压缩时,二进制search是一种方便有效的方式来支持在sorting后的数据中寻找位置。 但是,当文件被压缩,事情变得棘手。 我最近发现了zlib的Z_FULL_FLUSH选项,可以在压缩过程中使用Z_FULL_FLUSH选项在压缩输出中插入“同步点” inflateSync()然后inflateSync()可以从文件中的各个点开始读取)。 这是好的,虽然我已经有文件将不得不重新join这个function(奇怪的是gzip没有这个选项,但我愿意编写自己的压缩程序,如果我必须)。 从一个来源看来,即使Z_FULL_FLUSH不是一个完美的解决scheme…不仅不是所有的gzip压缩文件都支持,而且在档案中检测同步点的想法可能会产生误报(或者与幻数同步点,或由于Z_SYNC_FLUSH也产生同步点,但它们不能用于随机访问)。 有更好的解决scheme吗? 如果可能的话,我想避免使用辅助文件进行索引,显式的,对准随机访问的默认支持将会有帮助(即使它是大粒度的,就像能够在每个10 MB间隔开始读取一样)。 有没有比gzip更好的支持随机读取的压缩格式? 编辑 :正如我所提到的,我希望在压缩数据中进行二分search。 我不需要寻找一个特定的(未压缩的)位置 – 只是在压缩文件中寻求一些粗略的粒度。 我只是想支持一些东西,如“解压缩大约50%(25%,12.5%等)的数据到这个压缩文件”。
在MySQL中,我可以使用RAND()函数,在SQLite 3中还有其他的select吗?
我有一个包含几百万行的postgres中的表。 我在网上查了一下,发现了以下内容 SELECT myid FROM mytable ORDER BY RANDOM() LIMIT 1; 它的工作原理,但它真的很慢…有没有另一种方式来进行查询,或直接的方式来select一个随机的行而不读取所有的表? 顺便说一下,“myid”是一个整数,但它可以是一个空的字段。 谢谢