none
SQL SERVER COMPACT SP2でselectが遅い RRS feed

  • 質問

  • 飯沼です。

    お世話になります。

     

    現在、以下開発環境で開発しています。

    WindowsCE5.0

    SQLSERVER COMPACT3.5 SP2

    C#/CompactFrameWork3.5

     

    この環境で10万件くらいのデータをDBに登録し、QUERY Analyzer3で1件のみヒットするSELECT文を発行しました。

    SELECT自体は正常に終了するのですが、処理時間が7秒程かかります。

    PDAの性能に影響されるのはわかっていますが、一般的なPDAではこれくらいの速度が限界でしょうか?

    また、レコード数の上限はどれくらいでしょうか?

    なお、INDEXも設定してみましたが、設定してもしなくてもあまり変わりませんでした。

    ※以前お試しで作ったときはさくっとselectできていたような気がするんですが、WindowsCEをハードリセットしてしまい、

     その環境がもう残っておらず確認はできません。ただ、今回確認しているハードリセット後のハードになります。

     

    速くするための手段や、限界、環境等の情報があればよろしくお願いします。

    以上です。

     

    2010年12月7日 13:13

回答

  • そうなのですね。

    出来ることは、インデックスの作成とクエリの変更ぐらいしか思いつきません。

    実行プランを確認できるのであれば、何かが分かるかもしれませんが、COMPACT3.5 SP2 なので、実行プランが確認できるかどうかも分からないです。

    お役に立てずすみません。

    • 回答としてマーク iinumaeiji 2010年12月9日 4:31
    2010年12月8日 6:19
  • Management Studioなら、「テーブルの編集」ではなく、インデックスを右クリックして「新しいインデックス 」から操作しないと複合インデックスは作成できません。
    • 回答としてマーク iinumaeiji 2010年12月9日 4:23
    • 回答としてマークされていない iinumaeiji 2010年12月9日 4:23
    • 回答としてマーク iinumaeiji 2010年12月9日 4:26
    • 回答としてマークされていない iinumaeiji 2010年12月9日 4:26
    • 回答としてマーク iinumaeiji 2010年12月9日 4:29
    2010年12月9日 3:59

すべての返信

  • 一回目のクエリは遅いが、二回目は早いといった現象は見られますかね。

    そうであれば、データのキャッシュの有無により、パフォーマンスに影響があることが言えるのではないかと。

    2010年12月8日 4:16
  • 返信ありがとうございます。

    2回目も1回目と同様に7秒くらいかかっています。

     

    2010年12月8日 5:53
  • そうなのですね。

    出来ることは、インデックスの作成とクエリの変更ぐらいしか思いつきません。

    実行プランを確認できるのであれば、何かが分かるかもしれませんが、COMPACT3.5 SP2 なので、実行プランが確認できるかどうかも分からないです。

    お役に立てずすみません。

    • 回答としてマーク iinumaeiji 2010年12月9日 4:31
    2010年12月8日 6:19
  • 返信ありがとうございます。

    単純なselect文なので、変更というのも効果なしではないか?と思っています。

    簡単に言うと、select aaa from bbb='ccc'; のようなsql文です。

    インデックスも作成してみたのですが、あまり効果なしでした。

     

    もう少しあがいてみます。

    ありがとうございました。

    2010年12月8日 7:57
  • 念のため、検索対象のカラムにインデックスを指定したんですよね?

    それでも重いのなら、SQL Server Compactの限界かな。

    2010年12月8日 22:41
  • 返信ありがとうございます。

    あれから実行プランを確認し、table scanになっているのを確認しました。

    そこで、ユニークキーを検索対象に設定したところ、IndexScanになり、速くなりました。

    後はユニークキーを複合ユニークキーに出来れば解決できそうです。

    が、SQL Server Management Studioで一意の列を複数設定しても、それぞれの列が

    一意になっている(?)ようで、一意キー違反エラーになってしまいます。

    複合ユニークキーにできるかどうかもう少し調査してみます。

     

    2010年12月9日 1:28
  • Management Studioなら、「テーブルの編集」ではなく、インデックスを右クリックして「新しいインデックス 」から操作しないと複合インデックスは作成できません。
    • 回答としてマーク iinumaeiji 2010年12月9日 4:23
    • 回答としてマークされていない iinumaeiji 2010年12月9日 4:23
    • 回答としてマーク iinumaeiji 2010年12月9日 4:26
    • 回答としてマークされていない iinumaeiji 2010年12月9日 4:26
    • 回答としてマーク iinumaeiji 2010年12月9日 4:29
    2010年12月9日 3:59
  • 実は初めて使ったのであまりやり方がわかっていませんでした。

    さっそく教えていただいたやり方でやったところ、正常に設定できました。

    速度も問題ありません。

     

    教えていただきましたお二人に感謝します。

    ありがとうございました。

    2010年12月9日 4:31