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

Pytanie dotyczące najlepszych praktyk dla MySQL:kolejność według identyfikatora czy daty?

Jeśli jest jest szansa, że ​​dodasz dwa z tą samą datą, prawdopodobnie będziesz potrzebować:

SELECT balance FROM my_table ORDER BY date_added DESC,id DESC LIMIT 1;

(zwróć uwagę na klauzulę „malejąco” w obu polach).

Musisz jednak wziąć pod uwagę, co chcesz się wydarzyć, gdy ktoś doda wpis korygujący z 2 lutego, który ma datę 31 stycznia, aby upewnić się, że miesiąc styczeń jest kompletny. Będzie miał identyfikator większy niż ten z 1 lutego.

Ogólnie rzecz biorąc, systemy księgowe działają po prostu na dzień. Być może gdybyś mógł nam powiedzieć dlaczego kolejność jest ważna, możemy przedstawić inne sugestie.

W odpowiedzi na Twój komentarz:

Udzieliłbym kilku rad - to wszystko, co przychodzi mi do głowy od razu, zwykle rzucam znacznie więcej "rad" z jeszcze mniejszą zachętą :-) Dwie pierwsze, bardziej bazodanowe niż księgowe, to:

Najpierw zrób wszystko w trzeciej normalnej formie i wracaj tylko wtedy, gdy masz problemy z wydajnością. Zaoszczędzi to wiele niepokoju z duplikatami danych, które mogą wypaść z kroku. Nawet jeśli powrócisz, użyj wyzwalaczy i innych możliwości DBMS, aby upewnić się, że dane nie wyjdą poza krok.

Na przykład, jeśli chcesz przyspieszyć wyszukiwanie w kolumnie last_name, możesz utworzyć kolumnę upper_last_name (indeksowaną), a następnie użyć jej do zlokalizowania rekordów pasujących do wyszukiwanego hasła pisanego już wielkimi literami. To prawie zawsze będzie szybsze niż funkcja na wiersz upper(last_name) . Możesz użyć wyzwalacza wstawiania/aktualizacji, aby upewnić się, że upper_last_name jest zawsze ustawiona poprawnie, a to wiąże się z kosztami tylko wtedy, gdy zmienia się nazwa, a nie za każdym razem, gdy szukasz.

Po drugie, nie duplikuj danych nawet w różnych tabelach (takich jak bieżący schemat), chyba że możesz użyć tych samych trików typu wyzwalacza, aby zagwarantować, że dane nie przekroczą kroku. Co zrobi klient, gdy wyślesz mu fakturę, na której saldo końcowe nie będzie zgodne z saldem początkowym oraz zakupami? To nie sprawi, że Twoja firma będzie wyglądać bardzo profesjonalnie :-)

Po trzecie (i jest to bardziej związane z księgowością), generalnie nie musisz martwić się o liczbę transakcji podczas obliczania sald na bieżąco. Dzieje się tak, ponieważ systemy księgowe zwykle mają funkcję przenoszenia na koniec roku, która resetuje salda otwarcia.

Dlatego zwykle nigdy nie musisz przetwarzać danych z więcej niż roku na raz, co nie jest aż tak uciążliwe, chyba że jesteś rządem Stanów Zjednoczonych lub firmą Microsoft.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ImportError:Brak modułu o nazwie MySQLdb

  2. Łączenie tabel z różnych baz danych

  3. MySQL przy aktualizacji zduplikowanych kluczy

  4. Jak policzyć wszystkie wartości NULL w tabeli?

  5. MySQL CONCAT(ciąg,długi tekst) daje w wyniku ciąg szesnastkowy