代码之家  ›  专栏  ›  技术社区  ›  Julien

如果列的值在函数中使用,我应该在列上创建索引吗(硅灰岩)

  •  0
  • Julien  · 技术社区  · 14 年前

    我想知道它是否会对请求中用作条件的值进行索引更改,但要通过函数进行。

    例如,我有一个GPS坐标表:

    -Node (#id,lat,lng)
    

    以及这个请求:

    SELECT * FROM Node WHERE distance( lat, lng, $lat, $lng ) < $threshold
    

    在lat和lng上创建一个索引是否会带来任何优化(我正在使用SQLite)

    谢谢

    我只是想了同样的问题,但是如果我直接计算如下:

    SELECT * FROM Node WHERE (lat-$lat)*(lat-$lat) + (lng-$lng)*(lng-$lng)  < $threshold
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   Chris    14 年前

    查询如下所示:

    SELECT * FROM Node 
    WHERE lat >= $lat - $threshold
    AND lat <= $lat + $threshold
    AND lng >= $lng - $threshold
    AND lng <= $lng + $threshold
    AND distance( lat, lng, $lat, $lng )  < $threshold;
    
        2
  •  2
  •   Sky Sanders    14 年前

    对于查询,您绝对会看到性能上的好处。

    但是对于一个大型数据库,插入操作也会对性能造成影响。