32

SQLite データベースでテキストを主キーにするのは悪いことですか? 性能的に悪いと聞きましたが本当ですか?そのような場合、ROWIDは実際の主キーとして使用されますか?

4

5 に答える 5

-37

SQLite データベースでテキストを主キーにするのは悪いことですか? 性能的に悪いと聞きましたが本当ですか?

誰かが文字列をテーブルの主キーとして使用したとは聞いたことがありません。私にとって(そして他の人にも正直に願っています)、パフォーマンスが非常に低い非常に「醜い」練習です。

文字列を主キーとして使用する場合は、「いくつか」のことを考える必要があります。

  • 3つのシンボルの組み合わせで十分ですか?
  • または、5 つのシンボルを使用する必要がありますか?

ここでは、各行は同じ形式(もちろん読みやすさの問題) で、一意である必要があります。おー!次の「ピギー作業」 は、一意の文字列識別子2を生成する「一意の文字列ジェネレータ->を作成する必要があります。

また、考慮すべき次の問題があります。

  • 長い文字列=は自動的に比較が難しくなります
  • 文字列のサイズが数値よりもはるかに大きいことは明らかであるため、テーブルのサイズが大幅に増加します
  • 行数 - テーブルに 1000 行以上の行がある場合、文字列を主キーとして使用するのは狂気の沙汰です

それはより複雑なテーマですが、非常に小さなテーブルでは文字列を主キーとして使用することができますが(意味がある場合)、問題はありませんが、欠点を見ると、数値を使用する方がはるかに優れた手法です。確かに主キー!

そして結論とは?

文字列を主キーとして使用することはお勧めしません。利点として、より多くの欠点があります (実際に利点がありますか?)。

主キーとして数値を使用する方がはるかに優れています(最善を言うのは怖いです)。

そのような場合、ROWIDは実際の主キーとして使用されますか?

文字列をプライマリ not として使用する場合。

1実際の文字列が一意であることはめったにありません。

2もちろん、行のアイテムの名前から識別子を作成できると言えますが、これもまたスパゲッティ コードです (アイテムは同じ名前を持つことができます)。

于 2014-04-18T20:07:34.717 に答える