Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaki jest najwydajniejszy sposób przechowywania porządku sortowania w grupie rekordów w bazie danych?

A co z użyciem integer kolumna określająca kolejność? Domyślnie przypisujesz liczby * 1000, na przykład 1000, 2000, 3000.... a jeśli przesuniesz 3000 między 1000 a 2000, zmienisz je na 1500. Więc w większości przypadków nie musisz w ogóle aktualizować innych liczb. Używam tego podejścia i działa dobrze. Możesz także użyć double ale wtedy nie masz kontroli nad dokładnością i błędami zaokrąglania, więc raczej go nie używaj.

Tak więc algorytm wyglądałby tak :powiedzmy, że przenosisz B na pozycję po A. Najpierw wykonaj wybierz, aby zobaczyć kolejność rekordu obok A. Jeśli jest ona co najmniej +2 wyższa niż kolejność A, po prostu ustaw kolejność B, aby zmieścić się pomiędzy. Ale jeśli jest tylko o 1 więcej (nie ma spacji po A), wybierasz sąsiadujące rekordy B, aby zobaczyć, ile miejsca jest po tej stronie, dzielisz przez 2, a następnie dodajesz tę wartość do kolejności wszystkich rekordów między A i B. To wszystko!

(Pamiętaj, że powinieneś używać transakcji/blokowania dla dowolnego algorytmu, który zawiera więcej niż jedno zapytanie, więc dotyczy to również tego przypadku. Najprostszym sposobem jest użycie transakcji InnoDB.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. c9.io - jak znaleźć adres hosta, aby nawiązać połączenie mysql na platformie node.js

  2. pobieranie pierwszego wiersza tylko w zapytaniu mysql

  3. nie można połączyć się z dokerem mysql z lokalnego

  4. MySQL:Czy możesz określić losowy limit?

  5. Darmowy hosting z obsługą PHP