0

リストされたアイテムでユーザーのショッピング カートを表示しようとしています。私が避けたいのは、db_cartitems が 10,000 項目の長さになった後、2、3、または 10 年後にクエリ結果が表示されるまでに時間がかかることです。

データベースのテーブル構造を整理するとき、以前に注文したすべての製品をリストしたテーブルを用意してから、カート トークンで GROUP BY する必要があります (カートのアイテムがカートのビルドごとに一意に関連付けられるように、rand() 番号を作成しました)。

それとももっと良い方法がありますか?それとも私が気にしすぎですか?たとえば、50,000 件の注文商品がリストされて検索された場合、応答時間はかなり適切ですか?

マーチャントは 1 日に 50 件以下の注文を受け取る可能性があり、私は成長を前もって計画していないのではないかと心配しています。

4

1 に答える 1

2

あなたが求めているのは、クエリをより効率的に行うためにデータを非正規化する必要があるかどうかです。データベースの正規化のトピックについて少し読んで、この種の決定の背景を理解することをお勧めします。

質問に答えるには、(一般的に) 常にテーブルを正規化することから始めて、後でパフォーマンスの問題が発生し始めた場合は非正規化を検討する必要があります。2 年後、3 年後、または 10 年後に何が起こるかについては、私は気にしません。おそらく、今日心配すべき問題がたくさんあるからです。

正規化されたモデルから非正規化されたモデルへの移行は難しくありません。また、問題が発生した場合 (古いデータのアーカイブなど) にパフォーマンスを改善する他のオプションがある場合もあります。

于 2012-07-01T18:42:42.557 に答える