###知りたいこと
記事テーブルpostsの作成にあたり、主キーを複合主キーにした方がいいのか悩んでいます。
状況の説明
削除済みであることを示すis_trashというカラムがあります。
ユーザーが削除済みの記事を取得することはありません。
つまり必ずWHEREにはis_trash=0と指定したSQLを発行します。
(「0」は「削除済みでない」の意味)
このとき、主キーは(ID)でなく(is_trash,ID)という複合主キーにした方がいいでしょうか?
###考えていること
仮に以下のようにIDのみで指定するとき(削除済みとそうでないものとをミックスして取得するとき)があるならば、複合主キーにすべきでないと考えています。
SELECT * FROM posts WHERE ID = 10
なぜなら、複合主キーは必ず最初の指定でインデックスがされているために、(is_trash,ID)という複合主キーにした場合、WHERE ID = 10 の取得でインデックスが利かなくなってしまうためです。
しかし上記した状況のように、削除済みのものは必ず取得せず、以下のようなWHEREになるのであれば、複合主キーにした方がいいだろうという考えです。
SELECT * FROM posts WHERE is_trash = 0 AND ID = 10
この考えはあっているでしょうか?
回答3件
あなたの回答
tips
プレビュー