/ / Оптимізація розширення SQL запиту - mysql, sql, sql-server

Оптимізація розширення SQL-запиту - mysql, sql, sql-server

Мені потрібно зробити цей алгоритм максимально ефективним та швидким у SQL.

while( numberOfResults  < DesiredResults and NotCutOffCondition){
retrieve and store up to (DesiredResults - numberOfResults) results
based on radius
expand radius
}

Запит на радіус дуже просто, менше /більше меж. Я чув, що в той час як петлі є неефективними в SQL, тому що він не встановлений на основі, але я не можу придумати спосіб зробити це без нього. Чи є кращий спосіб? Це буде працювати на MySQL, може бути, SQL Server, якщо є якісь відмінності в тому, що я не знаю.

Розглянемо таку структуру таблиці

id int
x_position decimal indexed
y_position decimal indexed

Мені потрібно знайти найближчі n точок до заданогоx, y положення. можливі тисячі точок на невеликій території, але не завжди. Тому мені потрібно виходити з невеликого радіусу. Або принаймні я зрозумів, що це буде найефективніше, якщо я хочу лише 20 пунктів за звичайним запитом.

Відповіді:

1 для відповіді № 1

Для SQL Server тут "є спосіб пошуку найближчого сусіда за допомогою радіусу розширення в одному запиті. Це можна легко змінити для фінансування сусідів.

http://blogs.msdn.com/b/isaac/archive/2008/10/23/nearest-neighbors.aspx