2016-04-13 1 views
1

私は巨大なデータベースに200Kから〜1Mまでのファイルパス(これらはすべてハブサーバーに保存されているファイルです)を持っています。文字列を使用してディレクトリの内容を検索し、多くのファイルのフルパスをSQLリクエスト

私は、これらのディレクトリとファイルのツリーを印刷して、ユーザーがサーバーからダウンロードしたいファイルを選択できるようにするアプリケーションを開発しています。

問題:「+」ボタンをクリックしてディレクトリの内容を表示すると、すべてのテーブルを解析して、各パスが自分のディレクトリに属する​​かどうかを確認する必要があります。

これは時間がかかりすぎます。 (最小のサーバーでディレクトリごとに8秒) これを最小限に抑えるにはどうすればよいですか?すべてのテーブルを解析するのを避けるため、パスをアルファベット順にソートする方法はありますか?

ありがとうございます。 JoséTodeschini。それ以外の場合は、インデックスはしません、これはパーセント記号を含む、文字列定数でなければならないこと

SELECT * 
FROM  mytable 
WHERE path LIKE '/var/public/a/b/c/%' 

注:

答えて

0

あなたは、インデックスパス(またはより良い、それの主キーにする)と、このように検索する必要があり利用される。

+0

プライマリキーである必要はありませんが、すべてのパスが一度だけ存在するため、一意のインデックスにすることができます。 –

+0

LIKE "/ var /%"と同じ結果が出るはずです。すべてのサブレベル化されたディレクトリに/ var /に含まれているすべてのファイルが私に与えられます。私は/ var /とサブディレクトリに直接ファイルを必要とします。 ファイルに対してLIKE "/ var /% 'no- /'"を実行できますか?そして、私はサブディレクトリのためにどうすればいいですか? –

+0

@ Markus:主キーでない場合は、追加の主キーの検索が必要です。 – Quassnoi

関連する問題