在 MySQL 中查找条目的百分位数分数的时间复杂度是多少?
What is the time complexity for finding the percentile score of an entry in MySQL?
我们有一个动态集(排名每隔几分钟变化一次)。
我们想要显示用户的百分位数分数。
在 MySQL 中找到用户的 rank/percentile 的时间复杂度是多少?
(忽略所有磁盘寻道,假设整个索引都在 RAM 中)
MySQL 是否在索引中存储额外信息以加快计算速度?
我正在使用的查询:
SELECT COUNT(*) FROM score_table WHERE score>X"
SELECT COUNT(*) FROM score_table;
对于此查询:
SELECT COUNT(*)
FROM score_table
WHERE score > X;
我很确定 MySQL 会从 "X" 之后的值开始扫描索引。我不认为它对计算索引中叶子的大小进行了优化。所以,这个操作是 O(n),但会很快,因为索引在内存中。
如果分数变化这么快,很难想出一个好的数据结构来计算排名。根据分数的变化程度,您可能可以采取一些技巧来优化查询。
我们有一个动态集(排名每隔几分钟变化一次)。 我们想要显示用户的百分位数分数。
在 MySQL 中找到用户的 rank/percentile 的时间复杂度是多少? (忽略所有磁盘寻道,假设整个索引都在 RAM 中)
MySQL 是否在索引中存储额外信息以加快计算速度?
我正在使用的查询:
SELECT COUNT(*) FROM score_table WHERE score>X"
SELECT COUNT(*) FROM score_table;
对于此查询:
SELECT COUNT(*)
FROM score_table
WHERE score > X;
我很确定 MySQL 会从 "X" 之后的值开始扫描索引。我不认为它对计算索引中叶子的大小进行了优化。所以,这个操作是 O(n),但会很快,因为索引在内存中。
如果分数变化这么快,很难想出一个好的数据结构来计算排名。根据分数的变化程度,您可能可以采取一些技巧来优化查询。