1

現在、1,300 万行のデータベースがありuuid、主キーとして使用しています。データベースの移行を行うたびに、テーブルを完成させるのに何時間もかかります。クエリのパフォーマンスも悪いようです。

グーグルでいくつかのブログを読んだ後、彼らは からuuidに変換することを推奨しましbinary(16)たが、変換された値は判読できず、非常に使いにくいものです。また、Ruby コードで使用するのも困難です。

以外にMySQLでグローバルに一意の識別子を取得する代替ソリューションはありますuuidか?

mysql> select UNHEX(REPLACE('A4E7890F-A188-4663-89EB-176D94DF6774','-',''));
+---------------------------------------------------------------+
| UNHEX(REPLACE('A4E7890F-A188-4663-89EB-176D94DF6774','-','')) |
+---------------------------------------------------------------+
| ���Fc��m��gt                                                       |

私がチェックしたところ、mongodbにもObjectId12バイトしかありません。MySQLサーバーでそれを使用することは可能ですか? それをどのように利用して MySQL で使用できますか?

4

1 に答える 1

1

答え

アプリケーションでこれをテストする必要がありますが、非常に大きなデータセットでは、次の場合にパフォーマンスが向上すると予想されます。

  1. MySQL はそのように最適化されているため、主キーにはAUTO_INCREMENT列を使用してください。
  2. UUID 列にインデックスを付けて、テーブル全体をスキャンしなくても高速に検索できるようにします。

長い UUID を比較することは、整数キーほど効率的ではない可能性があるため、UUID 列をまだ頻繁に使用している場合でも、この方法で確実にパフォーマンスが向上するはずです。ただし、自分でベンチマークすることに代わるものはありません。

関連する質問

MySQL での UUID パフォーマンス?

于 2012-06-07T13:07:15.300 に答える