ホームページ >バックエンド開発 >PHPチュートリアル >分類ディレクトリの階層情報をできるだけ効率的にクエリするにはどうすればよいでしょうか?

分類ディレクトリの階層情報をできるだけ効率的にクエリするにはどうすればよいでしょうか?

WBOY
WBOYオリジナル
2016-07-06 13:52:571491ブラウズ

簡単な記事分類表があります。主な構造は次のとおりです

ID 保護者ID タイトル
1 0 全商品
2 1 PHP
3 1 Mysql
4 2 PHP について考える

...
など。非常に一般的なディレクトリ構造であるはずです。つまり、
の第 3 レベルのディレクトリは次のようになります 所有项目为一级、PHPMysql为其二级、ThinkPHPPHP

次に、データ id=4 だけを知っているとします。たとえば、

すべてのプロジェクト>>ThinkPHP code> をリストするにはどうすればよいですか。 <code>id=4这么一个数据,请问我要如何列出例如
所有项目 >> PHP >> ThinkPHPこのようなパンくずリストのナビゲーションはどうですか?

もちろん、ループを使用してリストできることはわかっていますが、パフォーマンスの無駄だと常に感じます。もっと早い方法はありますか?

同様の質問への回答が見つかりませんでした。キーワードの使用方法が不十分だったのかもしれません。最後に質問せざるを得ませんが、温かいアドバイスをよろしくお願いします

返信内容:

簡単な記事分類表があります。主な構造は次のとおりです

ID保護者IDタイトル10全商品21PHP31Mysql42PHP について考える
...

など。非常に一般的なディレクトリ構造であるはずです。つまり、
の第 3 レベルのディレクトリは次のようになります
所有项目为一级、PHPMysql为其二级、ThinkPHPPHP次に、データ id=4 だけを知っているとします。たとえば、

すべてのプロジェクト>>ThinkPHP code> をリストするにはどうすればよいですか。 <p>このようなパンくずリストのナビゲーションはどうですか? <code>id=4这么一个数据,请问我要如何列出例如
所有项目 >> PHP >> ThinkPHP
もちろん、ループを使用してリストできることはわかっていますが、パフォーマンスの無駄だと常に感じます。もっと早い方法はありますか?

同様の質問に対する回答が見つかりませんでした。キーワードの使用方法が不十分だったのかもしれません。最後に質問せざるを得ませんが、温かいアドバイスをよろしくお願いします


サブカテゴリを追加するときにすべての親カテゴリを検索し、パンくずリストを生成するには、別のフィールドを追加します。もちろん、このフィールドに保存されるデータは柔軟に保存でき、固定パンくずリストを生成する必要はありません。配列を生成し、ジョスンまたはシリアル化して保存し、それを取り出してリアルタイムにパンくずリストを生成することで、パンくずリストの柔軟な生成と変更に対応できます。

最も重要なアイデアは、新しいサブクラスを追加するときに親クラスのデータを保存することです。これは静的キャッシュの原理と似ています。

パンくずリスト (4 から 2 から 1) を使用する必要があるため、クエリと抽出のプロセスが必要になるため、他に方法はありません。

それは再帰を使用するか反復を使用するかによって決まります

カテゴリのレベル数が固定されている場合は、レベルごとに指定された SQL を記述して、コード レベルでのクエリのループによりパフォーマンスが無駄になりますが、コードの実装はシンプルで柔軟です

まず、Web サイトの階層ディレクトリ データを決定できます。これはそれほど多くはありません

データベースからすべてのデータを完全に取り出すことができます
それを再帰的に実行します。コードレベルでの操作によりデータベースクエリを削減します

効率的な​​方法はあまり多くありませんが、キャッシュはその 1 つであるべきです

お誘いありがとうございます。一般に、この種の分類に対する変更は非常に小さく、

を使用してそれを走査し、後で使用するためにキャッシュすることができます。普段はこんな感じで使っています

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。