質問編集履歴
5
誤字
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Djangoでページング機能を実装したリストの表示スピードを上げたい
|
test
CHANGED
File without changes
|
4
ごじ
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
この一覧表示はページングで7項目のレコード20件を1ページとして表示させていますが、
|
8
8
|
|
9
|
-
以下のように、
|
9
|
+
以下のように、ブラウザで表示されるまでの時間として
|
10
10
|
|
11
11
|
```
|
12
12
|
|
@@ -36,7 +36,7 @@
|
|
36
36
|
|
37
37
|
|
38
38
|
|
39
|
-
ローカルでCSVファイルの読み込みが100MBまでしかできておらず環境別で比較できない状況ではありますが、1GBのデータが入ったAWS上のデータベースに上記の2つのSQL文を直接実行し結果が返ってくるまでの時間を計測ました。
|
39
|
+
ローカルでCSVファイルの読み込みが100MBまでしかできておらず環境別で比較できない状況ではありますが、1GBのデータが入ったAWS上のデータベースに上記の2つのSQL文を直接実行し結果が返ってくるまでの時間を計測しました。
|
40
40
|
|
41
41
|
```
|
42
42
|
|
3
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -42,13 +42,13 @@
|
|
42
42
|
|
43
43
|
t2.micro→
|
44
44
|
|
45
|
-
SELECT COUNT(*) AS "__count" FROM ~:17秒
|
45
|
+
SELECT COUNT(*) AS "__count" FROM 対象テーブル ~:17秒
|
46
46
|
|
47
47
|
SELECT 対象項目,.... FROM 対象テーブル ~: 17秒
|
48
48
|
|
49
49
|
t2.xlarge→
|
50
50
|
|
51
|
-
SELECT COUNT(*) AS "__count" FROM ~:8秒
|
51
|
+
SELECT COUNT(*) AS "__count" FROM 対象テーブル ~:8秒
|
52
52
|
|
53
53
|
SELECT 対象項目,.... FROM 対象テーブル ~: 1秒
|
54
54
|
|
2
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,10 +8,14 @@
|
|
8
8
|
|
9
9
|
以下のように、
|
10
10
|
|
11
|
+
```
|
12
|
+
|
11
13
|
t2.micro→50秒
|
12
14
|
|
13
15
|
t2.xlarge→25秒
|
14
16
|
|
17
|
+
```
|
18
|
+
|
15
19
|
と、スペックを上げると約半分になりましたが、かなり遅いです(時間は大体です以下同様)。
|
16
20
|
|
17
21
|
|
@@ -34,6 +38,8 @@
|
|
34
38
|
|
35
39
|
ローカルでCSVファイルの読み込みが100MBまでしかできておらず環境別で比較できない状況ではありますが、1GBのデータが入ったAWS上のデータベースに上記の2つのSQL文を直接実行し結果が返ってくるまでの時間を計測ました。
|
36
40
|
|
41
|
+
```
|
42
|
+
|
37
43
|
t2.micro→
|
38
44
|
|
39
45
|
SELECT COUNT(*) AS "__count" FROM ~:17秒
|
@@ -46,7 +52,7 @@
|
|
46
52
|
|
47
53
|
SELECT 対象項目,.... FROM 対象テーブル ~: 1秒
|
48
54
|
|
49
|
-
|
55
|
+
```
|
50
56
|
|
51
57
|
この結果と冒頭の一覧表示(ブラウザで表示)にかかった時間を差し引くとSQLの実行処理とは別に15秒ほど他の処理に時間がかかっているということになります。
|
52
58
|
|
1
追記、誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -28,7 +28,7 @@
|
|
28
28
|
|
29
29
|
```
|
30
30
|
|
31
|
-
これは、最初のSELECT文のCOUNTメソッドでレコード件数を取得し、次のSELECT文で当該レコード20件分を読み込んでいます。ここでは表示項目(7項目)だけではなく全項目読み込んでおり、model.pyで記述した
|
31
|
+
これは、最初のSELECT文のCOUNTメソッドでレコード件数を取得し、次のSELECT文で当該レコード20件分を読み込んでいます。ここでは表示項目(7項目)だけではなく全項目読み込んでおり、models.pyで記述したソートが実行されています。
|
32
32
|
|
33
33
|
|
34
34
|
|
@@ -164,6 +164,66 @@
|
|
164
164
|
|
165
165
|
```
|
166
166
|
|
167
|
+
models.py
|
168
|
+
|
169
|
+
```
|
170
|
+
|
171
|
+
from django.db import models
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
# 日報テーブル
|
176
|
+
|
177
|
+
class nippotable(models.Model):
|
178
|
+
|
179
|
+
#actcd = models.IntegerField('アカウントコード') /外部キー
|
180
|
+
|
181
|
+
workday = models.DateField('作業日')
|
182
|
+
|
183
|
+
serialno= models.CharField('製番(製造番号)', max_length=20)
|
184
|
+
|
185
|
+
productname = models.CharField('製品品名(仕事名)', max_length=50)
|
186
|
+
|
187
|
+
productno = models.CharField('製品NO.', max_length=3)
|
188
|
+
|
189
|
+
workcontents = models.CharField('工程(業務)名', max_length=50)
|
190
|
+
|
191
|
+
worktypecd = models.IntegerField('工程(業務種別)コード')
|
192
|
+
|
193
|
+
starttime = models.DateTimeField('開始時間')
|
194
|
+
|
195
|
+
endtime = models.DateTimeField('終了時間')
|
196
|
+
|
197
|
+
biko = models.CharField('備考', max_length=50)
|
198
|
+
|
199
|
+
createday = models.DateField('作成日')
|
200
|
+
|
201
|
+
createname = models.CharField('更新者', max_length=20)
|
202
|
+
|
203
|
+
updatename = models.CharField('作成者', max_length=20)
|
204
|
+
|
205
|
+
draftflg = models.BooleanField('下書きフラグ')
|
206
|
+
|
207
|
+
updateflg = models.BooleanField('更新フラグ')
|
208
|
+
|
209
|
+
approvalflg = models.BooleanField('承認フラグ')
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
class Meta:
|
214
|
+
|
215
|
+
ordering = ['workday', 'starttime', 'endtime', 'updatename']
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
def __str__(self):
|
220
|
+
|
221
|
+
return self.workday
|
222
|
+
|
223
|
+
```
|
224
|
+
|
225
|
+
|
226
|
+
|
167
227
|
ap:Django
|
168
228
|
|
169
229
|
db:PostgreSQL
|