問題タブ [materialized-path-pattern]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server-2008 - マテリアライズドパスパターンVS階層
SQL Server 2008の聖書を読んでいますが、マテリアライズドパスパターンはhierarchyidよりも大幅に高速であると書かれています。これは本当に本当ですか?どうすればhierarchyidのパフォーマンスを同等以上にすることができますか。
sql - マテリアライズされたパスでツリーを並べ替えますか?
私はテーブルにツリー構造を持っており、それは私が子供を素早く見つけることを可能にするために具体化されたパスを使用しています。ただし、スレッド化されたフォーラムの返信で予想されるように、結果を深さ優先で並べ替える必要もあります。
したがって、最終結果は実際には次のように並べ替える必要があります。
どうすればそれを解決できますか?ストレートSQL(これはPostgreSQL 8.4)でそれを行うことができますか、それともこのテーブルに追加情報を追加する必要がありますか?
更新:ソート基準をより適切に説明しようとしています。
ID「1」がフォーラムへのルート投稿であり、「1」で始まる「matpath」を持つすべてのものがその投稿の子であると想像してください。したがって、ID 2から5は1への直接応答であり、「1」のマットパスを取得します。ただし、id 6は1への直接の応答ではなく2の応答であるため、1.2のマットパスを取得します。これは、すべてのIDが表に示されている、適切にネストされたスレッドフォーラムの場合、フォーラムの構造は次のようになることを意味します。したがって、順序付けの要件は次のとおりです。
materialized-path-pattern - マテリアライズド パス ツリー構造のパス パターンを生成する最良の方法
ウェブ全体の例を参照すると、「parent_id.node_id」のようなものを使用してパスを生成していることがわかります。例:-
しかし、この質問で説明されているように -具体化されたパスでツリーをソートしていますか? 、tree_idにゼロパディングを使用すると、作成順で簡単にソートできます。
このように固定長の文字列を使用すると、レベル - length(tree_id)/5 を簡単に計算できます。私が心配しているのは、ブランチごとに 9999 ユーザーではなく、最大 9999 ユーザーに制限されることです。私はここにいますか?
java - ネストされたデータをHibernateで保存するための効率的な方法を探しています
私は、java/hibernateでネストされたデータを表す効率的な方法を見つけようとしています。私の最初の解決策は、自己参照結合を使用した親子リストでしたが、SQLでレポートを作成する場合、この手法には明らかな落とし穴があります。ネストされたセットとマテリアライズされたパスを調べていましたが、SQLを介したクエリにも効率的な、休止状態にネイティブなネストされたデータを表す方法があることを期待していました。
sql - 仮想パスを含む Sql Server のツリー構造を表す
こんにちは、SQL データベースにツリー構造を作成したいと考えています。次のプロパティが必要です。
- 高速選択
- Cat2/Cat4 のような文字列だけで簡単に選択 -> Cat5 & Cat6 を返す
- 仮想カテゴリのサポート
- Insert は簡単なはずですが、高速な Select に比べれば重要ではありません
- 挿入と同じように削除します。簡単なのはいいことですが、選択をすばやくできることが重要
- 並べ替えは選択ほど重要ではありません
私はMaterialized-PathとhierarchyIdを見てきましたが、ほとんどの例ではAdventureWorksのようなサンプルを使用していますが、それは私のニーズには複雑すぎる.
記録のために、私はSql Server 2008 R2とC# 4.0を使用しています
mysql - マテリアライズド パスが実用的でないのはどのサイズですか?
テーブルに 700,000 行あると予想している場合、
ユーザーは、バニラ サインアップ (新しいツリーを開始する)
または招待されたサインアップ (既存のツリーで新しいブランチを開始する) になることができます。
これらのツリーが最初のノードから平均で 800 個のノードを取得すると予想する場合、マテリアライズド パスは実用的ですか? また、どの時点で非実用的になりますか?
php - mysqlのパスに基づいて選択
列id
、列parent
、およびpath
実体化されたパスである列があります。
のように見えます
このテーブルに基づいていくつかのクエリを実行する必要があります。
私がする必要があるクエリは
id
9歳の子供をすべて選択
最初にないのでIDを1または19に置き換えるまでは問題なく動作/
します。
番号が1で終わるすべての行を選択するため、1、11、21、31、211など
行1または19のいずれかで正しく機能します
だからSELECT * FROM
テスターWHERE 'path' LIKE '1/%' OR 'path' LIKE '%/1/%'
;
私が思いつくことができる最高のものはありますか、何か提案はありますか?
この
Select * from
テスターの場合、9の直接の子を選択しますが、サブの子は選択しませんwhere 'parent' = 9
。正常に動作します。
xレベルの深さの9の子の総数を選択します。
したがって、最終的に1行level1, level2, level3, ... levelx
またはx行のいずれかで、さまざまなレベルを表します。
この例では、xが3であると仮定します。この例の行は次のようになります9, 8, 6
(要求した場合は4番目のレベルが3になります)
何か案は?
編集
** 9の子IDをxレベルまで選択し、レベルは9を基準にします。
したがって、この例でも3をxとして使用します。
私たちは戻ってくることを探しています
繰り返しますが、これを行う方法については完全に途方に暮れています。
編集:
sql - 構造を維持しながらツリーをソートする
マテリアライズドパスを使用したツリーがあります。
表は次のようになります。
score
ツリー構造を維持したまま列でソートしたい。
重要なのは、子供が親の下にいるということです。
列はpath
データベースでのみ使用されるため、連続している必要はありません。
ツリーをソートするために現在使用しているSQLは、次のとおりです。
sqlite - Select all rows that have ID in materialized path
I have this a tree structured table with a materialized path column (matpath). The data looks like this:
etc
Given the ID, how can I get all elements that are above (one query) or below (anther query)? For example, if the ID is 7, I want to select rows with IDs 1, 2 and 5 in addition to 7. If the given ID is 3, select 1, 2 and 3. And so on.
Thank you.
ruby - 具体化されたパスからツリーを構築する
Ruby を使用してマテリアライズド パスからツリー構造を構築するのに問題があります。
(couchdb から) 並べ替えられた結果セットがあるとします。
ルビーのツリーとしてこれが必要なだけです。次のハッシュで十分です:
誰でも私を助けることができますか?