PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Колко ефективно е да се подрежда по разстояние (цялата таблица) в geodjango

Ако искате да сортирате всеки запис в тази таблица по разстояние, това ще бъде бавно, както се очаква, и няма какво да се направи (което ми е известно в този момент и ми е известно.)!

Можете да направите изчислението си по-ефективно, като следвате тези стъпки и направите някои допускания:

  1. Активирайте пространствено индексиране на вашите маси. За да направите това в GeoDjango, следвайте инструкции за документ и ги монтирайте към вашия модел:

  2. Сега можете да стесните заявката си с някои логически ограничения:

    Пример: Моят потребител няма да търси хора на повече от 50 км от текущата му позиция.

  3. Стеснете търсенето, като използвате dwithin пространствено търсене, което използва гореспоменатото пространствено индексиране , следователно е доста бърз.

  4. Накрая приложете distance подредете по на останалите редове.

Крайната заявка може да изглежда така:

current_location = me.location
people = People.objects.filter(
    location__dwithin=(current_location, D(km=50))
).annotate(
    distance=Distance('location', current_location)
).order_by('distance')

P.S: Вместо да създавате персонализиран опит за страниране, по-ефективно е да използвате методите за страниране, предоставени за django изгледите:

Или можете да използвате Django Rest Framework и да използвате нейното пагиниране:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не може да се свърже с PostgreSQL чрез база данни nodejs локално, внезапно спря да работи на mac

  2. Задаване на формат на датата по подразбиране в PostgreSQL

  3. rails - postgres грешка:Причина:Несъвместима версия на библиотеката:libpq.5.dylib изисква версия 1.0.0 или по-нова,

  4. Postgres:Защо производителността е толкова лоша на подселекти с Offset/Limit

  5. PostgreSQL EXPLAIN – Какви са разходите за заявка?