3

データベース内の「会社」ごとに一意のコードを作成する必要があります。

これが可能であると私が考える唯一の方法は、乱数を作成し、rand()この「会社」の番号がDBに存在するかどうかを確認し、再作成する場合です。

私の質問は次のとおりです。これを行うためのより良い方法、つまりより効率的な方法はありませんか。10,000 個のコードを作成していて、DB に既に 500,000 個ある場合、徐々に遅くなっていきます。

おそらくそれを行うためのより良い方法に関するアイデアやヒントはありますか?

編集:

申し訳ありませんが、おそらくもっとうまく説明できます。コードはすべて同時に生成されるわけではなく、1 日/1 か月/1 年に 1 回、いつでも作成できます。

また、コードの文字を定義できる必要があります。たとえば、英数字や数字のみなどです。

4

3 に答える 3

5

「Universally Unique Identifier」: http://en.wikipedia.org/wiki/Universally_unique_identifierを使用して、各企業のランダム コードを生成することをお勧めします。このようにして、データベースの重複チェックを回避できます。

誰でも UUID を作成し、それを使用して何かを識別することができます。これは、他の何かを識別するために誰かが同じ識別子を意図せずに作成することは決してないという合理的な自信を持っています。したがって、UUID でラベル付けされた情報は、識別子 (ID) の競合を解決する必要なく、後で単一のデータベースに結合できます。

PHP では、この目的のために関数 uniqid を使用できます: http://es1.php.net/manual/en/function.uniqid.php

于 2013-01-18T08:11:39.393 に答える
2

MySQLのUUID関数が役立つはずです。http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid

INSERT INTO table (col1,col2)VALUES(UUID(), "someValue")

于 2013-01-18T08:14:41.630 に答える
0

コードが単なる整数の場合は、自動インクリメントを使用するか、現在の最大値を取得してインクリメントを開始します

于 2013-01-18T08:12:26.157 に答える