回答編集履歴

5

修正

2019/02/11 04:08

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -52,6 +52,4 @@
52
52
 
53
53
 
54
54
 
55
- それから、全文検索で検索対象として1万件してもユザーが見わけありません
55
+ それから、全文検索で検索対象として1万件想定していないなら、一定件数でペジングすなどの仕組みでのSQLで検証すべきです
56
-
57
- 一定件数でページングするなどを行えばSQLで突合する件数を減らすことができ、効果は望めます。

4

追記

2019/02/11 04:08

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -49,3 +49,9 @@
49
49
  [json型でもindexが貼りたい!](https://qiita.com/szkennel/items/369885242b5d95f15d5d)
50
50
 
51
51
  但し、扱えるのは5.7以降です。
52
+
53
+
54
+
55
+ それから、全文検索で検索対象として1万件返してもユーザーが見るわけありません。
56
+
57
+ 一定件数でページングするなどを行えばSQLで突合する件数を減らすことができ、効果は望めます。

3

追記

2019/02/11 04:06

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -37,3 +37,15 @@
37
37
 
38
38
 
39
39
  頻繁に更新されるテーブルのキャッシュは意味がありません。
40
+
41
+
42
+
43
+ 追記
44
+
45
+ --
46
+
47
+ tagmapの指すテーブルにtagmapの代わりにJson型でタグを持たせる方法だと、検索対象の件数自体を減らせるので効果があるかもしれません。
48
+
49
+ [json型でもindexが貼りたい!](https://qiita.com/szkennel/items/369885242b5d95f15d5d)
50
+
51
+ 但し、扱えるのは5.7以降です。

2

追記

2019/02/11 03:55

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -27,3 +27,13 @@
27
27
 
28
28
 
29
29
  キャッシュ以前に、10億件の持ち方と取り出す単位など設計の見直しだと感じます。
30
+
31
+ キャッシュすることに意味が無い理由については、以下です。
32
+
33
+ [8.9.3.1 クエリーキャッシュの動作](https://dev.mysql.com/doc/refman/5.6/ja/query-cache-operation.html)
34
+
35
+ > テーブルが変更された場合、そのテーブルを使用するキャッシュされたすべてのクエリーが無効になり、キャッシュから削除されます。これには、変更されたテーブルにマップされた MERGE テーブルを使用するクエリーも含まれます。テーブルは、INSERT、UPDATE、DELETE、TRUNCATE TABLE、ALTER TABLE、DROP TABLE、または DROP DATABASE などの多くの種類のステートメントによって変更できます。
36
+
37
+
38
+
39
+ 頻繁に更新されるテーブルのキャッシュは意味がありません。

1

追記

2019/02/11 02:50

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -2,9 +2,13 @@
2
2
 
3
3
  上記は確認されていますか?
4
4
 
5
+ > クエリーキャッシュは、あまり頻繁に変更されないテーブルがあり、それに対してサーバーが多くの同一のクエリーを受け取る環境で役立つことがあります。
5
6
 
6
7
 
8
+
9
+ 上記のこの要件を満たしたものですか?10億件を想定したテーブルがそうであるようには思えません。
10
+
7
- 仮に10億件のデータを全てキャッシュに格納すれば、2回目の性能が出せるとは言い切れません。
11
+ また、仮に10億件のデータを全てキャッシュに格納すれば、2回目の性能が出せるとは言い切れません。
8
12
 
9
13
  逆に遅くなる場合もあります。
10
14