0
假设数据库中有一列双打,我有一个目标值。我们称之为x。该列在数据库中进行索引和排序。 在这一列中找到x的x或最接近的值(如果列中没有x),最好的方法是什么? (假设表格非常大(超过10,000,000行),并且x的x或最接近的值始终存储在最后一行(在最后1000行内但该值不准确)。查询时间非常关键,我事先尽可能快的方法)在MYSQL表列中找到最接近的匹配值
感谢寻求
假设数据库中有一列双打,我有一个目标值。我们称之为x。该列在数据库中进行索引和排序。 在这一列中找到x的x或最接近的值(如果列中没有x),最好的方法是什么? (假设表格非常大(超过10,000,000行),并且x的x或最接近的值始终存储在最后一行(在最后1000行内但该值不准确)。查询时间非常关键,我事先尽可能快的方法)在MYSQL表列中找到最接近的匹配值
感谢寻求
该指数是不会帮你找到“最接近值X”,因为你不能索引特定表达,如果它是变量。
下面的查询会给你的col
这是最接近x
,与id
沿价值:
SELECT col, id FROM table ORDER BY ABS(x - col) LIMIT 1;
对于大表,这将是非常缓慢的。如果您确定最接近的值在“最后1000行”内,那么您可以使用子查询删除一段时间,假设“最后1000行”意味着“值最高的行1000 id
”:
SELECT col, id FROM
(SELECT col, id FROM table ORDER BY id DESC LIMIT 1000) t
ORDER BY ABS(x - col) LIMIT 1;
谢谢,但我想每秒查询一次!这是我的最后一个选择吗? – Mosi