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

Tạo mã duy nhất trong PHP / MySQL?

Nếu bạn cần khoảng 10 triệu khóa duy nhất (ví dụ), cách tốt nhất là chọn một không gian khóa lớn hơn theo cấp số nhân và bắt đầu tạo ngẫu nhiên. Đọc về Nghịch lý sinh nhật - đó là điều chính mà bạn nên lo lắng. Nếu bạn muốn có 2 ^ n khóa bảo mật và duy nhất, hãy đảm bảo có ít nhất 2 ^ (2 * n) giá trị khả thi. Đây là một thuật toán O (n log n) thô:

  • Sử dụng không gian khóa ít nhất là 2 ^ 50 (vì vậy, nói cách khác, cho phép 2 ^ 50 giá trị duy nhất có thể có) và bạn sẽ hầu như không có bất kỳ va chạm nào trong toàn bộ tập dữ liệu của mình - và bất kỳ ai thô bạo buộc các khóa của bạn sẽ thậm chí có khả năng nhận được chìa khóa nếu họ thử 2 ^ 25 trong số chúng.
  • tạo nhiều số ngẫu nhiên nếu bạn cần
  • lập chỉ mục cơ sở dữ liệu trên khóa của bạn (đây là bước O (n lg n):sắp xếp)
  • trang thông qua DB và lặp lại trên toàn bộ tập dữ liệu để cắt các phần trùng lặp (mã giả bên dưới)
  • Xóa các hàng trùng lặp và bạn đã hoàn tất.

Mã giả:

$last = null;
while ($current = getnext()) {
    if ($last == $current) {
        push($toDelete, $current);
    }
    $last = $current;
}


  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 - CẬP NHẬT nhiều hàng với các giá trị khác nhau trong một truy vấn

  2. Làm thế nào để xác định kết nối mysqli trong một tệp php và sau đó sử dụng nó trên tệp khác?

  3. SQL LEFT-JOIN trên 2 trường cho MySQL

  4. MySQL, hai bảng hiển thị thông tin từ cả hai bảng

  5. Lỗi SOLR DataImport không thể thực hiện truy vấn