2014-01-29 87 views
0

假设数据库中有一列双打,我有一个目标值。我们称之为x。该列在数据库中进行索引和排序。 在这一列中找到x的x或最接近的值(如果列中没有x),最好的方法是什么? (假设表格非常大(超过10,000,000行),并且x的x或最接近的值始终存储在最后一行(在最后1000行内但该值不准确)。查询时间非常关键,我事先尽可能快的方法)在MYSQL表列中找到最接近的匹配值

感谢寻求

回答

1

该指数是不会帮你找到“最接近值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; 
+0

谢谢,但我想每秒查询一次!这是我的最后一个选择吗? – Mosi