sql >> データベース >  >> RDS >> Mysql

PHP / MySQLで一意のコードを生成しますか?

    たとえば、約1,000万の一意のキーが必要な場合、最善のアプローチは、指数関数的に大きいキースペースを選択し、ランダムに生成を開始することです。 誕生日のパラドックス について読む -それはあなたが心配すべき主なことです。 2 ^ n個の一意で安全なキーが必要な場合は、少なくとも2 ^(2 * n)個の可能な値があることを確認してください。大まかなO(n log n)アルゴリズムは次のとおりです。

    • 少なくとも2^50のキースペースを使用します(つまり、2 ^ 50の可能な一意の値を許可します)。そうすれば、データセット全体で衝突がほとんど発生しなくなります。 2 ^ 25を試してみると、キーを取得する確率がほぼ均等になります。
    • 必要な数の乱数を生成します
    • キーのデータベースにインデックスを付けます(これはO(n lg n)ステップ:ソートです)
    • DBをページングし、データセット全体を反復処理して、重複をトリミングします(以下の擬似コード)
    • 重複する行を削除すれば完了です。

    擬似コード:

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


    1. mySql:セル内の単語数(コンマで区切られた文字列)が一致したセルと同じ値を持つ行を取得します

    2. PHPセッションとログインページでの投稿の問題

    3. MySQLとMariaDB

    4. OracleストアドプロシージャのWHERE句にコンマ区切り値で送信する