ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

SQL Serverのデータ、Magic側でインデックスは指定するのが望ましいのか?

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 .5 .6 | 投稿日時 2017-3-29 15:51 | 最終変更
nkmt  長老   投稿数: 1668
例えば過去10数年分の大量の売上明細データがあり
速度を求める為、売上明細上に
売上日・得意先コード・商品コードなどを項目として
持っているとします。

そしてこの売上明細データには
伝票番号+行
商品コード+売上日
商品コード+得意先+売上日
といった複数のインデックスも用意してあるとします。

Pervasiveだと、Magicのプラグラム側で使用する
最適なインデックスを必ず指定するようにしておりました。

SQLコマンドではなく普通のMagicのプログラミングで
SQL Serverの場合もPervasive同様に
if(条件A, '2'INDDEX, if(条件B, '3'INDDEX, '1'INDEX) )
といった指定をされていますか?

※追記:紛らわしい記述が有ったので編集しました。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-3-29 16:11
ISHIJIMA  長老 居住地: 静岡県  投稿数: 1827
私は管理をすべてMAGICで行っているのでMAGICとSQLSERVERは同じにしています。
ただあまりキーは増やしていません。



投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-3-29 16:21
nkmt  長老   投稿数: 1668
ISHIJIMAさん、ありがとうございます。
私の質問の仕方が紛らわしかったかもしれません。
私もMagic上でSQL Serverのデータを定義しております。

Magicのプログラムミングの中で
タスクで使用するインデックスを明示する/しないが
重要か、速度に影響が出るのかを知りたいです。
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-3-29 16:37
ISHIJIMA  長老 居住地: 静岡県  投稿数: 1827
勘違いしていました。
SQLSERVERから使用した事かありませんね
あまり気にした事がないので速度等問題ないのかもしれません。
答えになっていない思いますがすみません。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-3-29 16:44 | 最終変更
nkmt  長老   投稿数: 1668
レスありがとうございます。
プログラミングで工数を減らしたいのと、パフォーマンスを考えての質問でした。

インデックスを複数用意した場合、どのインデックスを使うかによって並び順は多いに影響しますね。

データの読み出し順序に影響するので
大量データから少量抽出する際、
最適なインデックスが準備されているのであれば
インデックスは明示した方が望ましいのかもしれないですね。

今までもそのように記述してきたので、今後もそのようにしたいと思います。

データにインデックスをあまり用意せずに
SQLコマンドではなく、普通のMagicの作りの場合は
ソート を指定する事もお有りなんでしょうね。

仮想キーを用意する方もおられるでしょうし
取り出したデータをインデックスを用意したメモリWFに
書き出す方もおられるでしょうし。

私は完全正規化をせずに
インデックスに成り得る項目を
明細データにも持たせて
売上伝票にも売上明細にもインデックスを数本用意する事が
多いです。

過去の明細や伝票も消さずに残す事が多いので、そういった作りになってしまうのでしょうね。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-3-29 17:34
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは Puです

オプティマイザに任せるのがベターだと思います
それでも遅い場合のみ キーを明示的に指定するのが
基本だと思います

SQL文を記述するのに わざわざキーを指定しませんよね
MAGIC側がどんなSQL文を発行しているかわかりませんが
基本SQLserverの場合はオプティマイザ任せです。

でわ〜でわ〜
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-3-29 17:55
nkmt  長老   投稿数: 1668
Puさんレスありがとうございます。

よろしければ教えてください。
オプティマイザというのは何ですか?
(恥ずかしながら何もわかりません。)

SQL Serverの何かToolでしょうか?

データの並び順が大事な画面表示や印刷処理では
インデックスを指定しますが(あるいはソート)
ただ絞込み 内部で集計するような処理の場合は
複数インデックスが定義されているデータであっても
メインソースのインデックス指定は 常に 1番
の指定でも良いという事なのでしょうか?
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-3-29 18:25
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは Puです

最適化してくれる頼もしい奴です。

以下文献から引用
---------------------------引用開始
クエリ最適化をユーザーが直接操作することはできない。クエリがデータベースサーバ (DBMS) に対して発行され、パーサーが構文解析すると、その結果がクエリオプティマイザに送られ、クエリ最適化が行われる。
--------------------------引用終わり
投票数:1 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約