回答編集履歴

5

追記

2019/11/29 05:42

投稿

sazi
sazi

スコア25188

test CHANGED
@@ -36,4 +36,32 @@
36
36
 
37
37
  AUTO_IDは名前から推測するに、オートナンバーですよね。
38
38
 
39
- datetime型などでデフォルトGETDATE()の作成日時項目を追加して、それを降順にしたインデックスで代用できるはずなので試されてみて下さい。
39
+ datetime型などでデフォルトGETDATE()の作成日時項目を追加して、それを降順にしたインデックスで代用できるはずなので試されてみて下さい。
40
+
41
+
42
+
43
+ 追記2
44
+
45
+ --
46
+
47
+ 後は、フルテキストインデックス以外の条件である程度の件数に絞れるなら、existsによる条件に変更すれば、最初の条件の件数以上のアクセスは発生しないので、高速かもしれません。
48
+
49
+ ```SQL
50
+
51
+ SELECT * FROM [TABLE_NAME] t
52
+
53
+ WHERE PREF='大阪府' AND STORE='お店'
54
+
55
+ and exists(
56
+
57
+ SELECT 1 FROM [TABLE_NAME]
58
+
59
+ where AUTO_ID=t.AUTO_ID and CONTAINS(TITLE,'"*中古*"')
60
+
61
+ )
62
+
63
+ ORDER BY AUTO_ID DESC OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
64
+
65
+ ```
66
+
67
+ ※インデックスは前述と同様

4

追記

2019/11/29 05:42

投稿

sazi
sazi

スコア25188

test CHANGED
@@ -23,3 +23,17 @@
23
23
  または
24
24
 
25
25
  (AUTO_ID DESC, PREF, STOR)
26
+
27
+
28
+
29
+ 追記
30
+
31
+ --
32
+
33
+ SQLからはプライマリーを使うように働くはずですけど、昇順と降順が混在すると意図通りには働かない顔も知れませんね。
34
+
35
+
36
+
37
+ AUTO_IDは名前から推測するに、オートナンバーですよね。
38
+
39
+ datetime型などでデフォルトGETDATE()の作成日時項目を追加して、それを降順にしたインデックスで代用できるはずなので試されてみてく下さい。

3

訂正

2019/11/29 02:30

投稿

sazi
sazi

スコア25188

test CHANGED
@@ -1,3 +1,25 @@
1
1
  前の回答でも申しましたように、selectで使用できるインデックスは一つです。
2
2
 
3
+ 適切なインデックスにして下さい。
4
+
5
+ ```SQL
6
+
7
+ SELECT * FROM [TABLE_NAME] WHERE AUTO_ID IN (
8
+
3
- フルテキストインデックスは通常のインデックス項目を含ませることはできませんので、インデックスが適切に使用されるように、SQLをネストさせて下さい。
9
+ SELECT AUTO_ID FROM [TABLE_NAME] where CONTAINS(TITLE,'"*中古*"'
10
+
11
+ )
12
+
13
+ AND PREF='大阪府' AND STORE='お店')
14
+
15
+ ORDER BY AUTO_ID DESC OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
16
+
17
+ ```
18
+
19
+ 上記であれば、以下のようなインデックスが必要です
20
+
21
+ (PREF, STOR, AUTO_ID DESC)
22
+
23
+ または
24
+
25
+ (AUTO_ID DESC, PREF, STOR)

2

推敲

2019/11/28 06:55

投稿

sazi
sazi

スコア25188

test CHANGED
@@ -1,3 +1,3 @@
1
1
  前の回答でも申しましたように、selectで使用できるインデックスは一つです。
2
2
 
3
- フルテキストインデックスは通常のインデックス項目を含ませることはできませんので、インデックスが適切にしようされるように、SQLをネストさせて下さい。
3
+ フルテキストインデックスは通常のインデックス項目を含ませることはできませんので、インデックスが適切に使用されるように、SQLをネストさせて下さい。

1

推敲

2019/11/28 06:49

投稿

sazi
sazi

スコア25188

test CHANGED
@@ -1,3 +1,3 @@
1
1
  前の回答でも申しましたように、selectで使用できるインデックスは一つです。
2
2
 
3
- SQLをネストさせて下さい。
3
+ フルテキストインデックスは通常のインデックス項目を含ませることはできませんので、インデックスが適切にしようされるように、SQLをネストさせて下さい。