MySQL được kiểm soát bởi Oracle, trong khi Postgres có sẵn theo giấy phép nguồn mở từ Nhóm phát triển toàn cầu PostgreSQL. Show PostgreSQL gần với tiêu chuẩn ANSI SQL hơn, MySQL gần hơn với tiêu chuẩn ODBC. Một trong những điểm khác biệt đáng chú ý nhất giữa MySQL và PostgreSQL là thực tế là bạn không thể thực hiện các truy vấn con lồng nhau của các tiểu vùng trong MySQL. MySQL không hỗ trợ CTE, các hàm cửa sổ, các liên kết và mảng bên ngoài đầy đủ. So với PostgreSQL, MySQL có cộng đồng người dùng lớn và nhiều loại tài liệu khác nhau. MySQL sử dụng '#' không chuẩn để bắt đầu dòng nhận xét và PostgreSQL sử dụng '-' để bắt đầu dòng nhận xét. MySQL cung cấp các loại công cụ lưu trữ bảng khác nhau như: InnoDB, MyIsam, Bộ nhớ. PostgreSQL không cung cấp các loại công cụ tốc độ bảng khác nhau. PostgreSQL phân biệt chữ hoa chữ thường để so sánh chuỗi. Trường “DbRnd” không giống với trường “dbrnd”. Đây là một thay đổi lớn đối với nhiều người dùng từ MySQL và các hệ thống cơ sở dữ liệu nhỏ khác. PostgreSQL có một số tính năng thú vị như: create_series, hàm tổng hợp tùy chỉnh, mảng, v.v.. mặt khác MySQL cũng có một số tính năng thú vị như: biến phiên trong truy vấn, FORCE INDEX, v.v.. Trong PostgreSQL, khi bạn ở trong một giao dịch, hầu như mọi thao tác đều có thể được hoàn tác. Có một số hoạt động không thể đảo ngược (như tạo hoặc phá hủy cơ sở dữ liệu hoặc vùng bảng), nhưng các sửa đổi bảng bình thường có thể được sao lưu bằng cách phát hành ROLLBACK thông qua thiết kế Ghi-Ahead Log của nó. MySQL không hỗ trợ bất kỳ loại khôi phục nào khi sử dụng MyISAM. Với InnoDB, máy chủ có một cam kết ngầm xảy ra ngay cả khi hành vi cam kết tự động thông thường bị tắt. Điều này có nghĩa là bất kỳ thay đổi bảng đơn lẻ hoặc thay đổi tương tự nào sẽ được cam kết ngay lập tức. Postgres xóa bỏ MySQL theo mọi cách tốt nhất ở cấp độ truy vấn và chúng tôi có thể sử dụng Postgres để khai thác dữ liệu và cơ sở dữ liệu phân tích hàng loạt, nơi chúng tôi chạy rất nhiều truy vấn rất lớn, được mã hóa thủ công có thể tận dụng lợi thế của Postgres trong các phương thức nối (MySQL chỉ hỗ trợ Vòng lặp lồng nhau và Vòng lặp lồng nhau qua chỉ mục, trong khi Postgres hỗ trợ nhiều phương pháp), khả năng truy vấn thường phong phú hơn và những thứ tốt khác như chỉ mục từng phần có thể được sử dụng rộng rãi. PostgreSQL sử dụng một mô hình khóa mạnh mẽ được gọi là MVCC để hạn chế các tình huống trong đó các máy khách riêng lẻ can thiệp vào nhau. Một bản tóm tắt ngắn gọn về lợi ích chính của MVCC sẽ là "người đọc không bao giờ bị người viết chặn". MySQL's InnoDB triển khai MVCC bằng cách sử dụng phân đoạn khôi phục và cơ sở dữ liệu InnoDB hỗ trợ tất cả bốn mức cách ly giao dịch tiêu chuẩn SQL. PostgreSQL sử dụng các phương pháp tối ưu hóa truy vấn dựa trên chi phí để có được hiệu suất tốt cho nhiều loại liên kết khác nhau. Chi phí truy vấn được đánh giá dựa trên thống kê của người lập kế hoạch được thu thập khi các bảng được phân tích kết hợp với chi phí của người lập kế hoạch có thể điều chỉnh và các tính năng nâng cao như Trình tối ưu hóa truy vấn di truyền. MySQL không có mức độ phức tạp này trong trình lập kế hoạch của nó và các điều chỉnh để Kiểm soát Hiệu suất Trình tối ưu hóa Truy vấn còn thô sơ. Thay vào đó, các nhà phát triển làm những việc như cung cấp các gợi ý chỉ mục một cách rõ ràng để đảm bảo các phép nối được thực thi chính xác. PostgreSQL có các tùy chọn sao chép khác với MySQL. MySQL không có khôi phục tại thời điểm. Một hoạt động mà PostgreSQL được biết là hoạt động chậm là thực hiện đếm đầy đủ các hàng trong bảng, thường sử dụng SQL này: |