回答編集履歴

2

追記

2021/12/26 13:00

投稿

sazi
sazi

スコア25206

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

追記

2021/12/26 13:00

投稿

sazi
sazi

スコア25206

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
+ のようにすれば良いかと思います。