回答編集履歴
2
インデックスの件も追加
answer
CHANGED
@@ -12,4 +12,11 @@
|
|
12
12
|
SQLに慣れているのであれば、`DB::raw(~)`でSQL処理系に依存する表記で書いてしまってもいいでしょうし。
|
13
13
|
`->whereRaw("publish between cast(? as timestamp) and cast(? as timestamp) + '6 days'::interval", [$val, $val])`
|
14
14
|
が通じるかどうか。
|
15
|
-
(?の2箇所をそれぞれ同じ$valで置き換えさせて、クエリ上で6日分日付を足しているつもり。)
|
15
|
+
(?の2箇所をそれぞれ同じ$valで置き換えさせて、クエリ上で6日分日付を足しているつもり。)
|
16
|
+
|
17
|
+
あと、余計なお世話かもしれませんが、
|
18
|
+
カラムidとpublishにはインデックスは設定済みでしょうか?
|
19
|
+
idがユーザーIDらしいので重複を許すインデックスで、
|
20
|
+
publishも同じく重複を許すインデックスでしょうね。
|
21
|
+
SQL実行ログを記録できるように設定変更できていれば、
|
22
|
+
[EXPLAINの利用](https://www.postgresql.jp/document/13/html/using-explain.html)でクエリー実行パフォーマンスを念の為にチェックしてみると良いです。
|
1
whereの見直し
answer
CHANGED
@@ -9,4 +9,7 @@
|
|
9
9
|
本当に時刻成分なしに比較するなら素直にDATE型で扱った方がよろしいかと。
|
10
10
|
(比較するときにいちいちDATE型に変換するのは無駄だし。[式に対するインデックス](https://www.postgresql.jp/document/13/html/indexes-expressional.html)を駆使したら少しはマシかも知れませんが。)
|
11
11
|
|
12
|
-
SQLに慣れているのであれば、`DB::raw(~)`でSQL処理系に依存する表記で書いてしまってもいいでしょうし。
|
12
|
+
SQLに慣れているのであれば、`DB::raw(~)`でSQL処理系に依存する表記で書いてしまってもいいでしょうし。
|
13
|
+
`->whereRaw("publish between cast(? as timestamp) and cast(? as timestamp) + '6 days'::interval", [$val, $val])`
|
14
|
+
が通じるかどうか。
|
15
|
+
(?の2箇所をそれぞれ同じ$valで置き換えさせて、クエリ上で6日分日付を足しているつもり。)
|