回答編集履歴

5

推敲

2019/11/27 06:45

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -68,4 +68,4 @@
68
68
 
69
69
  ```
70
70
 
71
- などで(後者は遅いかもですが)、上限値を超える場合に、条件を追加するようにメッセージを出すとか。
71
+ などで(後者は遅いかもですが)、値を超える場合に、条件を追加するようにメッセージを出すとか。

4

追記

2019/11/27 06:45

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -49,3 +49,23 @@
49
49
  ```
50
50
 
51
51
  2番目が遅いという事なので、検索結果が少なくなるように条件を工夫するようなアプローチを考えないと駄目かもしれませんね。
52
+
53
+
54
+
55
+ 例えば、
56
+
57
+ ```SQL
58
+
59
+ select * from [TABLE_NAME] where CONTAINS([TITLE],'"*[KEYWORD]*"')
60
+
61
+ OFFSET 0 ROWS FETCH NEXT 50 ROWS ONLY
62
+
63
+ ```
64
+
65
+ ```SQL
66
+
67
+ select count(*) from [TABLE_NAME] where CONTAINS([TITLE],'"*[KEYWORD]*"')
68
+
69
+ ```
70
+
71
+ などで(後者は遅いかもですが)、上限値を超える場合に、条件を追加するようにメッセージを出すとか。

3

追記

2019/11/27 06:40

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -29,3 +29,23 @@
29
29
  ORDER BY [identity_column_name] DESC OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
30
30
 
31
31
  ```
32
+
33
+ 但し、上記は、そもそも以下のSQLが単独で早くないと意味はありません。
34
+
35
+
36
+
37
+ ```SQL
38
+
39
+ select * from [TABLE_NAME]
40
+
41
+ ORDER BY [identity_column_name] DESC OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
42
+
43
+ ```
44
+
45
+ ```SQL
46
+
47
+ select プライマリーキー from [TABLE_NAME] where CONTAINS([TITLE],'"*[KEYWORD]*"')
48
+
49
+ ```
50
+
51
+ 2番目が遅いという事なので、検索結果が少なくなるように条件を工夫するようなアプローチを考えないと駄目かもしれませんね。

2

追記

2019/11/27 06:31

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -8,7 +8,11 @@
8
8
 
9
9
  --
10
10
 
11
- select で使用されるインデックスは一つだけですので、インデックスを分け使用されようにネストしてみしょう
11
+ select で使用されるインデックスは一つだけですので、そのインデックスに、whereやorder byでの項目が含まれ必要があり
12
+
13
+ インデックスを分けて使用されるようにネストしてみましょう。
14
+
15
+
12
16
 
13
17
  [identity_column_name] DESC のインデックスが有る状態で、以下の問い合わせで改善されないでしょうか。
14
18
 

1

追記

2019/11/27 06:01

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -1,3 +1,27 @@
1
1
  identity_column_nameに関するインデックスはありますか?
2
2
 
3
3
  また、desc指定していますか?
4
+
5
+
6
+
7
+ 追記
8
+
9
+ --
10
+
11
+ select で使用されるインデックスは一つだけですので、インデックスを分けて使用されるようにネストしてみましょう。
12
+
13
+ [identity_column_name] DESC のインデックスが有る状態で、以下の問い合わせで改善されないでしょうか。
14
+
15
+ ```SQL
16
+
17
+ select * from [TABLE_NAME]
18
+
19
+ where プライマリーキー in (
20
+
21
+ select プライマリーキー from [TABLE_NAME] where CONTAINS([TITLE],'"*[KEYWORD]*"')
22
+
23
+ )
24
+
25
+ ORDER BY [identity_column_name] DESC OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
26
+
27
+ ```