1

データベースにカテゴリのツリーがあります。カテゴリ ID によってツリーに関連付けられたアイテムのテーブルもあります。

ここで、特定のカテゴリのすべてのアイテムとその子、およびその子などを一覧表示したいと考えています...

今のところ、次のように進めます。

  • 関連するすべてのカテゴリの ID を取得します。
  • 次のような WHERE 句を使用して項目テーブルでクエリを作成します: WHERE cat_id=2 OR cat_id=10 OR ...

カテゴリがたくさんある場合、この方法ではクエリが非常に遅くなり、非常に長くなると思います。場合によっては、100 のカテゴリで検索することもあります。

より良い習慣はありますか?

4

1 に答える 1

1

「リレーショナルデータベースにツリーを保存する」に関するguglから:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

  • 隣接リストは単純ですが、ほとんどの複雑な場合には適していません
  • ネストされたセットは、最初のビュー (ほとんどが書き込み中) から複雑ですが、RDBM でツリーを格納および読み取るための標準にはるかに似ています。

+1 約

EXPLAIN select * from table

ボトルネックを確認するのに役立ちます。

代わりに試してみてください

column1 = 1 or column1 = 2

何かのようなもの:

column1 in (1, 2)

とにかく、インデックスがなければ役に立ちません。

于 2011-05-09T18:07:13.733 に答える