0

データベースでいくつかのクエリを実行していて、パフォーマンスを向上させたいと考えており、いくつかのインデックスを作成しましたが、それでも応答時間が長すぎると思うので、速度を上げるために、より良いインデックスまたは別のインデックスを作成できるかどうかを確認したいと考えています。

私が考えるテーブルのスキーマには、次のような最大のボトルネックがあると思います。

R_D(  **id** int not null,  **SDD** date not null,  numa int,   numt int,   price decimal,  
FOREIGN KEY (room_type_id) REFERENCES R_T (id)

興味深いのは、日付 (例: 2010-05-20) を含むSDD属性で、私のクエリでは次のような範囲検索を行います: SDD >= '2010-05-03' and SDD < '2010-05-08'

私が持っている、実際にパフォーマンスを向上させるインデックスは、

INDEX sdd ON R_D (SDD, numa, numt, price, id)

問題は、2010-05-03 と 2010-06-04 のように距離の長い範囲検索を行うと、クエリの実行に約 6 ~ 10 秒かかることです。

SDD でいくつかのインデックスとクラスター インデックスを試してみましたが、これまでのところ、上記のインデックスが最良の結果でした。

アドバイスをいただければ幸いです。

心から

メスティカ

4

2 に答える 2

0

クエリを次のように変更するとどうなりますか

SELECT * FROM YourTable where SDD >= '2010-05-03' and SDD < '2010-05-08'

これにより、速度低下やその他の原因が日付制限であるかどうかがわかります。また、データベースが「2010-05-08」を文字列ではなく日付として解釈していることを確認してください。一部のデータベースには、日付の特別な構文があります。試すことができます

SELECT * FROM YourTable where SDD >= DATE('2010-05-03') and SDD < DATE('2010-05-08')
于 2010-05-20T15:53:34.070 に答える