回答編集履歴
2
追記
test
CHANGED
@@ -13,3 +13,33 @@
|
|
13
13
|
`is_offisial=coalesce(パラメータ, is_offisial)`
|
14
14
|
|
15
15
|
のようにすれば良いかと思います。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
### 追記
|
20
|
+
|
21
|
+
インデックスを適用するにあたっては以下のポイントがあります。
|
22
|
+
|
23
|
+
A.使用されるインデックスにする事
|
24
|
+
|
25
|
+
B.効率の良いインデックスにする事
|
26
|
+
|
27
|
+
C.共用されるインデックスにする事(※無駄なインデックスを作らない事)
|
28
|
+
|
29
|
+
※検索性能の観点からは、優先順位はA>B>Cです。更新やリソースの観点からはCが優先です。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
現状のままであれば、AまたはBに該当しません。
|
34
|
+
|
35
|
+
①では少なくともBではなく、Cを目的としていますね。
|
36
|
+
|
37
|
+
②はAおよびBを満たし、Cに該当するかどうかという所です。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
提示した案は、AおよびCを満たし、Bは完全ではありません。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
性能の観点からは②がお薦めであり、提示した案は①の亜種です。
|
1
追記
test
CHANGED
@@ -4,4 +4,12 @@
|
|
4
4
|
|
5
5
|
別な方法としては、インデックスは現状のまま、条件を「ANY、日本語の、人気順」にする事です。
|
6
6
|
|
7
|
-
条件の左辺と右辺を等価に(is_offisial=is_offisial)すればANYになります。
|
7
|
+
条件の左辺と右辺を等価に(`is_offisial=is_offisial`)すればANYになります。
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
SQLでパラメータを含む条件式としては、公式のパラメータを指定しない場合は`Null`として、
|
12
|
+
|
13
|
+
`is_offisial=coalesce(パラメータ, is_offisial)`
|
14
|
+
|
15
|
+
のようにすれば良いかと思います。
|