Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Câu hỏi thực hành tốt nhất cho MySQL:thứ tự theo id hoặc ngày?

Nếu có cơ hội bạn sẽ được thêm hai cái vào cùng một ngày, có thể bạn sẽ cần:

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

(lưu ý mệnh đề 'giảm dần' trên cả hai trường).

Tuy nhiên, bạn sẽ cần phải tính đến những gì bạn muốn xảy ra khi ai đó thêm mục nhập điều chỉnh của ngày 2 tháng 2 được lấy ngày 31 tháng 1 để đảm bảo tháng 1 hoàn thành. Nó sẽ có một ID lớn hơn những ID được tạo vào ngày 1 tháng Hai.

Nói chung, hệ thống kế toán chỉ hoạt động theo ngày tháng. Có lẽ nếu bạn có thể cho chúng tôi biết tại sao thứ tự là quan trọng, chúng tôi có thể đưa ra các đề xuất khác.

Để trả lời bình luận của bạn:

Tôi sẽ cung cấp một vài lời khuyên - đây là tất cả những gì tôi có thể nghĩ ra ngay lập tức, tôi thường đưa ra nhiều "lời khuyên" hơn mà thậm chí ít khuyến khích hơn :-) Hai phần đầu, liên quan đến cơ sở dữ liệu nhiều hơn liên quan đến kế toán, là:

Trước tiên, hãy làm mọi thứ ở dạng bình thường thứ ba và chỉ hoàn nguyên nếu và khi bạn gặp sự cố về hiệu suất. Điều này sẽ giúp bạn tiết kiệm rất nhiều khó khăn với dữ liệu trùng lặp có thể bị lệch bước. Ngay cả khi bạn hoàn nguyên, hãy sử dụng trình kích hoạt và các khả năng DBMS khác để đảm bảo rằng dữ liệu không bị lệch.

Ví dụ:nếu bạn muốn tăng tốc tìm kiếm của mình trên cột last_name, bạn có thể tạo một cột upper_last_name (được lập chỉ mục), sau đó sử dụng cột đó để định vị các bản ghi phù hợp với cụm từ tìm kiếm đã viết hoa của bạn. Điều này hầu như sẽ luôn nhanh hơn so với hàm mỗi hàng upper(last_name) . Bạn có thể sử dụng trình kích hoạt chèn / cập nhật để đảm bảo upper_last_name luôn được đặt chính xác và điều này chỉ phát sinh chi phí khi tên thay đổi, không phải bất cứ khi nào bạn tìm kiếm.

Thứ hai, không trùng lặp dữ liệu ngay cả trên các bảng (như lược đồ hiện tại của bạn) trừ khi bạn có thể sử dụng các thủ thuật loại trình kích hoạt tương tự đó để đảm bảo dữ liệu sẽ không bị lệch. Khách hàng của bạn sẽ làm gì khi bạn gửi cho họ một hóa đơn mà số dư cuối cùng không khớp với số dư ban đầu cộng với các giao dịch mua? Điều đó sẽ không làm cho công ty của bạn trông rất chuyên nghiệp :-)

Thứ ba (và điều này liên quan đến kế toán nhiều hơn), bạn thường không cần phải lo lắng về số lượng giao dịch khi tính toán số dư một cách nhanh chóng. Đó là bởi vì hệ thống kế toán thường có chức năng luân chuyển vào cuối năm để đặt lại số dư đầu kỳ.

Vì vậy, bạn thường không bao giờ phải xử lý nhiều hơn một năm dữ liệu cùng một lúc, điều này, trừ khi bạn là chính phủ Hoa Kỳ hoặc Microsoft, thì điều đó không quá khó khăn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL CAST - Cách nhập Cast trong MySQL

  2. Làm thế nào để kích hoạt mysqlnd cho php?

  3. Làm cách nào để yêu cầu trợ giúp tối ưu hóa &sửa các truy vấn trong MySQL?

  4. Truy vấn xếp hạng nhóm PHP MYSQL

  5. Đồng hồ đếm ngược-php + mysql + js