にリストをリンクされフェッチ:は、私がこのような構造を持つMySQLデータベースのテーブルを持っているMySQLデータベース
table
id INT NOT NULL PRIMARY KEY
data ..
next_id INT NULL
私はリンクリストの順番でデータをフェッチする必要があります。例えば、このデータを指定された:
id | next_id
----+---------
1 | 2
2 | 4
3 | 9
4 | 3
9 | NULL
私はそのために、ID = 1、2、4、3、9の行をフェッチする必要があります。データベースクエリでこれを行うにはどうすればよいですか? (私はクライアント側でそれを行うことができます。これがデータベース側でできるかどうか不思議です。つまり、不可能だと言っても問題ありません。
ターミネーションポイントを持つこともできます(たとえば、10フェッチ後に停止する、または行の一部の条件が真となる)が、これは必須ではありません(クライアント側で実行できます)。私は(私が望む)循環参照をチェックする必要はありません。
追加のインデックステーブルを作成できますか? Billが提案しているクエリの説明計画については、実際に興味があります。主キーを常に見ているので、それほど悪くはないかもしれません。私はあなたのクエリの最初のノードのIDを提供すると仮定しています。 (そうでなければ、残酷になるでしょう)。 10回のラウンドトリップがあります(私が知っていることではなく、あなたが尋ねたものではありません)。問合せで作成されたテンポラリ・テーブルは、特に結果が小さく設定されている場合には、それを実行します。 – TheJacobTaylor