<分区>
我在 MySQL 中有一个 AES 加密列,我想对其进行排序并对结果进行分页。
我遍历每一行并将其添加到数组中。然后我对数组进行排序。对于 > 10K 行,这变得非常慢。
我正在考虑添加一个额外的列并添加从 0-##### 开始的顺序,但我看到的问题是每次在中间插入一行时我都必须更新顺序。
如果有人有这方面的经验,我只是想集思广益。
谢谢
<分区>
我在 MySQL 中有一个 AES 加密列,我想对其进行排序并对结果进行分页。
我遍历每一行并将其添加到数组中。然后我对数组进行排序。对于 > 10K 行,这变得非常慢。
我正在考虑添加一个额外的列并添加从 0-##### 开始的顺序,但我看到的问题是每次在中间插入一行时我都必须更新顺序。
如果有人有这方面的经验,我只是想集思广益。
谢谢
最佳答案
-- drop table encryptIt;
create table encryptIt
( id int auto_increment primary key,
ciphertext blob not null
);
按原样从 PHP 加密到它,或参见 This answer .
现在是时候直接从 mysql 分页了,无需 PHP 循环和排序。假设您将 secret your_key
提供给 mysql。假设您可以获得基本的计数,因此知道您的页数(每页 25)。
SELECT id,CAST(AES_DECRYPT(ciphertext,'your_key') AS CHAR) AS cleartext
FROM encryptIt
order by cleartext
limit 0,25; -- start at first block of 25, bring back 25
-- limit 2,25; -- start at 3rd block of 25, bring back 25
使用 order by 和 limit 应用正常分页。
遵循最佳实践的 key 管理。一个模糊的评论,但我把它扔在那里。
关于mysql - 对加密列进行排序有哪些不同的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33838370/