将复杂的 Sql 查询转换为 Rails
Convert a complex Sql query to Rails
我在我的应用程序中使用 gem geokit rails。我有一个包含各种地址的 table。我正在尝试使用 geokit 功能 by_distance 查找按距原点的距离排序的记录。
所以我现在正在做这个。
@close = Mytable.by_distance(:origin => "12 wall street, NY")
所以这里发生的是MyTable中的所有id都按顺序存储在@close中,这意味着最接近的是数组的第一个元素。
实际上我只需要距离 Mytable 最近的两个地址。所以我想知道该怎么做?因为我当前的代码按顺序为我提供了 table 中所有最近地址的列表。我不想表现不佳,因为我只需要 2 个最近的站点。
请建议如何实现。
你应该试试这个:
@close = Mytable.by_distance(:origin => "12 wall street, NY").limit(2)
请注意,by_distance
查询已经进行了尽可能好的优化,向查询中添加 limit
不会对您的性能产生任何影响,但它应该也不会减慢您的应用程序。
一如既往,在您的控制台中对其进行测试,看看生成的 SQL 语句是什么样的,并且没有发生任何奇怪的事情。您可能还希望将两者相互比较以确保确定。
我在我的应用程序中使用 gem geokit rails。我有一个包含各种地址的 table。我正在尝试使用 geokit 功能 by_distance 查找按距原点的距离排序的记录。
所以我现在正在做这个。
@close = Mytable.by_distance(:origin => "12 wall street, NY")
所以这里发生的是MyTable中的所有id都按顺序存储在@close中,这意味着最接近的是数组的第一个元素。
实际上我只需要距离 Mytable 最近的两个地址。所以我想知道该怎么做?因为我当前的代码按顺序为我提供了 table 中所有最近地址的列表。我不想表现不佳,因为我只需要 2 个最近的站点。
请建议如何实现。
你应该试试这个:
@close = Mytable.by_distance(:origin => "12 wall street, NY").limit(2)
请注意,by_distance
查询已经进行了尽可能好的优化,向查询中添加 limit
不会对您的性能产生任何影响,但它应该也不会减慢您的应用程序。
一如既往,在您的控制台中对其进行测试,看看生成的 SQL 语句是什么样的,并且没有发生任何奇怪的事情。您可能还希望将两者相互比较以确保确定。