PostgreSQL nâng cao hơn rất nhiều khi nói đến các tính năng SQL.
Những thứ mà MySQL vẫn chưa có (và PostgreSQL có):
-
các ràng buộc có thể hoãn lại
-
kiểm tra các ràng buộc(MySQL 8.0. 16 đã thêm chúng, MariaDB 10.2 có chúng) -
tham gia bên ngoài đầy đủ
MySQL âm thầm sử dụng liên kết bên trong với một số biến thể cú pháp:
https://rextester.com/ADME43793
-
các phép nối bên
-
biểu thức chính quy không hoạt động với UTF-8(Đã sửa với MySQL 8.0) -
biểu thức chính quy không hỗ trợ thay thế hoặc chuỗi con(Được giới thiệu với MySQL 8.0) -
các hàm bảng (
select * from my_function()
) -
biểu thức bảng phổ biến(Được giới thiệu với MySQL 8.0) -
truy vấn đệ quy(Được giới thiệu với MySQL 8.0) -
CTE có thể ghi
-
chức năng cửa sổ(Được giới thiệu với MySQL 8.0) -
chỉ số dựa trên chức năng
-
chỉ mục một phần
-
BAO GỒM cột bổ sung trong một chỉ mục (ví dụ:đối với các chỉ mục duy nhất)
-
thống kê nhiều cột
-
tìm kiếm toàn văn trên các bảng giao dịch(MySQL 5.6 hỗ trợ điều này) -
Các tính năng của GIS trên bảng giao dịch
-
Toán tử EXCEPT hoặc INTERSECT (MariaDB có chúng)
-
bạn không thể sử dụng một bảng tạm thời hai lần trong cùng một câu lệnh chọn
-
bạn không thể sử dụng bảng đang được thay đổi (cập nhật / xóa / chèn) trong một lựa chọn phụ
-
bạn không thể tạo dạng xem sử dụng bảng dẫn xuất(Có thể kể từ MySQL 8.0)create view x as select * from (select * from y);
-
mức độ nhất quán đọc tuyên bố. Cần thiết cho ví dụ:
update foo set x = y, y = x
hoặc
update foo set a = b, a = a + 100
-
DDL giao dịch
-
Trình kích hoạt DDL
-
ràng buộc loại trừ
-
kho khóa / giá trị
-
Lập chỉ mục các tài liệu JSON hoàn chỉnh
-
Biểu thức đường dẫn SQL / JSON (kể từ Postgres 12)
-
các loại phạm vi
-
miền
-
mảng (bao gồm các chỉ mục trên mảng)
-
vai trò (nhóm) để quản lý các đặc quyền của người dùng(MariaDB có chúng, được giới thiệu với MySQL 8.0) -
truy vấn song song (kể từ Postgres 9.6 )
-
tạo chỉ mục song song (kể từ Postgres 11)
-
kiểu dữ liệu do người dùng xác định (bao gồm các ràng buộc kiểm tra)
-
quan điểm cụ thể hóa
-
tổng hợp tùy chỉnh
-
các chức năng cửa sổ tùy chỉnh
-
boolean
thích hợp kiểu dữ liệu
(coi bất kỳ biểu thức nào có thể được chuyển đổi thành số khác 0 là "true" là không một kiểu boolean thích hợp)
Khi nói đến các tính năng Không gian / GIS thì Postgres với PostGIS cũng có nhiều khả năng hơn. Đây là một so sánh hay.
Không chắc bạn gọi là "dễ sử dụng" nhưng có một số tính năng SQL hiện đại mà tôi không muốn bỏ lỡ (CTE, hàm cửa sổ) sẽ định nghĩa "dễ sử dụng" đối với tôi.
Bây giờ, PostgreSQL không hoàn hảo và có lẽ điều đáng ghét nhất có thể là điều chỉnh quá trình VACUUM đáng sợ cho một cơ sở dữ liệu ghi nhiều.