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

Cách lưu trữ IP trong mySQL

Tôi khuyên bạn nên xem xét loại truy vấn bạn sẽ chạy để quyết định định dạng nào bạn áp dụng.

Chỉ khi bạn cần rút ra hoặc so sánh các octet riêng lẻ, bạn sẽ phải cân nhắc việc tách chúng thành các trường riêng biệt.

Nếu không, hãy lưu trữ nó dưới dạng số nguyên 4 byte. Điều đó cũng có phần thưởng là cho phép bạn sử dụng MySQL tích hợp sẵn INET_ATON () INET_NTOA () các chức năng.

Hiệu suất so với Không gian

Bộ nhớ:

Nếu bạn chỉ hỗ trợ địa chỉ IPv4 thì kiểu dữ liệu của bạn trong MySQL có thể là UNSIGNED INT chỉ sử dụng 4 byte bộ nhớ.

Để lưu trữ các octet riêng lẻ, bạn chỉ cần sử dụng UNSIGNED TINYINT kiểu dữ liệu, không phải SMALLINTS , sẽ sử dụng hết 1 byte mỗi bộ nhớ.

Cả hai phương pháp sẽ sử dụng bộ nhớ tương tự, có lẽ nhiều hơn một chút cho các trường riêng biệt cho một số chi phí.

Thông tin thêm:

Hiệu suất:

Sử dụng một trường duy nhất sẽ mang lại hiệu suất tốt hơn nhiều, đó là một so sánh duy nhất thay vì 4. Bạn đã đề cập rằng bạn sẽ chỉ chạy các truy vấn đối với toàn bộ địa chỉ IP, vì vậy không cần phải giữ các octet riêng biệt. Sử dụng INET_ * các hàm của MySQL sẽ thực hiện chuyển đổi giữa các biểu diễn văn bản và số nguyên một lần để so sánh.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tomcat 7.0.42 pooling, hibernate 4.2, giải pháp kết nối tự động mysql rock solid

  2. MySQL NOT IN truy vấn

  3. Làm cách nào để buộc đăng xuất khỏi tất cả người dùng đối với một trang web?

  4. Cách thoát Trích dẫn Đơn, Ký tự Đặc biệt trong MySQL

  5. pdo chèn hình ảnh trực tiếp vào cơ sở dữ liệu - luôn chèn BLOB - 0B