Я использую PostgreSQL 11
У меня в базе около 3 миллионов строк
Время на выполнение этого запроса - 2 секунды
EXPLAIN ANALYZE SELECT Student.ID AS id,
Student.name AS name, Student.age AS age,dept.name,college.name
FROM Student as Student
LEFT OUTER JOIN department dept
on dept.id=Student.dept_id
LEFT OUTER JOIN college college
on college.id=dept.college_id
WHERE Student.usertran_id = 'EM-001'
ORDER BY Student.datesendjc desc
LIMIT 10 OFFSET 0
Результат :
"Limit (cost=332499.36..332500.52 rows=10 width=30) (actual time=1707.668..1713.719 rows=10 loops=1)"
" -> Gather Merge (cost=332499.36..332574.50 rows=644 width=30) (actual time=1707.663..1713.684 rows=10 loops=1)"
" Workers Planned: 2"
" Workers Launched: 2"
" -> Sort (cost=331499.33..331500.14 rows=322 width=30) (actual time=1677.797..1677.806 rows=6 loops=3)"
" Sort Key: student.datesendjc DESC"
" Sort Method: quicksort Memory: 25kB"
" Worker 0: Sort Method: quicksort Memory: 25kB"
" Worker 1: Sort Method: quicksort Memory: 25kB"
" -> Parallel Seq Scan on student (cost=0.00..331492.38 rows=322 width=30) (actual time=298.782..1677.567 rows=10 loops=3)"
" Filter: ((usertran_id)::text = 'EM-001'::text)"
" Rows Removed by Filter: 1494350"
"Planning Time: 3.414 ms"
"Execution Time: 1713.871 ms"
Продолжительность исполнения без ORDER BY Student.datesendjc desc составляет 166,770 мс
Я также пытаюсь сделать АНАЛИЗ студента
Я хочу иметь время выполнения, подобное или почти равное запросу без ORDER BY Student.datesendjc desc
1 ответ
Для запроса, который фильтрует с помощью WHERE Student.usertran_id =
и имеет предложение ORDER BY Student.datesendjc desc
, вам нужно будет создать индекс для Student(usertran_id, datesendjc)
.
Похожие вопросы
Новые вопросы
postgresql
PostgreSQL - это система управления объектно-реляционными базами данных с открытым исходным кодом (ORDBMS), доступная для всех основных платформ, включая Linux, UNIX, Windows и OS X. Пожалуйста, указывайте свою точную версию Postgres, задавая вопросы. Вопросы, касающиеся администрирования или расширенных функций, лучше всего направлять на dba.stackexchange.com.