私は巨大なデータベースに200Kから〜1Mまでのファイルパス(これらはすべてハブサーバーに保存されているファイルです)を持っています。文字列を使用してディレクトリの内容を検索し、多くのファイルのフルパスをSQLリクエスト
私は、これらのディレクトリとファイルのツリーを印刷して、ユーザーがサーバーからダウンロードしたいファイルを選択できるようにするアプリケーションを開発しています。
問題:「+」ボタンをクリックしてディレクトリの内容を表示すると、すべてのテーブルを解析して、各パスが自分のディレクトリに属するかどうかを確認する必要があります。
これは時間がかかりすぎます。 (最小のサーバーでディレクトリごとに8秒) これを最小限に抑えるにはどうすればよいですか?すべてのテーブルを解析するのを避けるため、パスをアルファベット順にソートする方法はありますか?
ありがとうございます。 JoséTodeschini。それ以外の場合は、インデックスはしません、これはパーセント記号を含む、文字列定数でなければならないこと
がSELECT *
FROM mytable
WHERE path LIKE '/var/public/a/b/c/%'
注:
プライマリキーである必要はありませんが、すべてのパスが一度だけ存在するため、一意のインデックスにすることができます。 –
LIKE "/ var /%"と同じ結果が出るはずです。すべてのサブレベル化されたディレクトリに/ var /に含まれているすべてのファイルが私に与えられます。私は/ var /とサブディレクトリに直接ファイルを必要とします。 ファイルに対してLIKE "/ var /% 'no- /'"を実行できますか?そして、私はサブディレクトリのためにどうすればいいですか? –
@ Markus:主キーでない場合は、追加の主キーの検索が必要です。 – Quassnoi