teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

推敲

2019/11/27 06:45

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -33,4 +33,4 @@
33
33
  ```SQL
34
34
  select count(*) from [TABLE_NAME] where CONTAINS([TITLE],'"*[KEYWORD]*"')
35
35
  ```
36
- などで(後者は遅いかもですが)、上限値を超える場合に、条件を追加するようにメッセージを出すとか。
36
+ などで(後者は遅いかもですが)、値を超える場合に、条件を追加するようにメッセージを出すとか。

4

追記

2019/11/27 06:45

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -23,4 +23,14 @@
23
23
  ```SQL
24
24
  select プライマリーキー from [TABLE_NAME] where CONTAINS([TITLE],'"*[KEYWORD]*"')
25
25
  ```
26
- 2番目が遅いという事なので、検索結果が少なくなるように条件を工夫するようなアプローチを考えないと駄目かもしれませんね。
26
+ 2番目が遅いという事なので、検索結果が少なくなるように条件を工夫するようなアプローチを考えないと駄目かもしれませんね。
27
+
28
+ 例えば、
29
+ ```SQL
30
+ select * from [TABLE_NAME] where CONTAINS([TITLE],'"*[KEYWORD]*"')
31
+ OFFSET 0 ROWS FETCH NEXT 50 ROWS ONLY
32
+ ```
33
+ ```SQL
34
+ select count(*) from [TABLE_NAME] where CONTAINS([TITLE],'"*[KEYWORD]*"')
35
+ ```
36
+ などで(後者は遅いかもですが)、上限値を超える場合に、条件を追加するようにメッセージを出すとか。

3

追記

2019/11/27 06:40

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -13,4 +13,14 @@
13
13
  select プライマリーキー from [TABLE_NAME] where CONTAINS([TITLE],'"*[KEYWORD]*"')
14
14
  )
15
15
  ORDER BY [identity_column_name] DESC OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
16
- ```
16
+ ```
17
+ 但し、上記は、そもそも以下のSQLが単独で早くないと意味はありません。
18
+
19
+ ```SQL
20
+ select * from [TABLE_NAME]
21
+ ORDER BY [identity_column_name] DESC OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
22
+ ```
23
+ ```SQL
24
+ select プライマリーキー from [TABLE_NAME] where CONTAINS([TITLE],'"*[KEYWORD]*"')
25
+ ```
26
+ 2番目が遅いという事なので、検索結果が少なくなるように条件を工夫するようなアプローチを考えないと駄目かもしれませんね。

2

追記

2019/11/27 06:31

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -3,7 +3,9 @@
3
3
 
4
4
  追記
5
5
  --
6
- select で使用されるインデックスは一つだけですので、インデックスを分けて使用されるようネストししょう
6
+ select で使用されるインデックスは一つだけですので、そのインデックスに、whereやorder byでの項目が含まれいる必要があり
7
+ インデックスを分けて使用されるようにネストしてみましょう。
8
+
7
9
  [identity_column_name] DESC のインデックスが有る状態で、以下の問い合わせで改善されないでしょうか。
8
10
  ```SQL
9
11
  select * from [TABLE_NAME]

1

追記

2019/11/27 06:01

投稿

sazi
sazi

スコア25430

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