提升 PostgreSQL 查询性能
Amy McCarty
Instructor
| 顺序 | 子句 | 作用 |
|---|---|---|
| 1 | FROM | 指定表 |
| 2 | WHERE | 筛选/限制记录 |
EXPLAIN
SELECT * FROM phones
Seq Scan on phones (cost = 0.00..22.7
,rows=1270
,width=36)
查询规划器

EXPLAIN
SELECT * FROM phones
WHERE phone_code = 235
Seq Scan on phones (cost = 0.00..25.8
,rows=6,width=636)
Filter: (phone_code=235)
查询规划器

| country | phone_code | reliability |
|---|---|---|
| 乍得 | 235 | 中 |
| 中国 | 86 | 高 |
| 哥斯达黎加 | 506 | 高 |
| 印度 | 91 | 中 |
| 印度尼西亚 | 62 | 中 |
| 伊拉克 | 964 | 低 |
EXPLAIN
SELECT * FROM phones
WHERE country LIKE 'Ch%'
OR country LIKE 'In%'
Seq Scan on phones (cost = 0.00..29.05
,rows=13,width=36)
Filter: ((country~~'Ch%'::text)
OR(country~~'In%'::text))
| country | phone_code | reliability |
|---|---|---|
| 乍得 | 235 | 中 |
| 中国 | 86 | 高 |
| 哥斯达黎加 | 506 | 高 |
| 印度 | 91 | 中 |
| 印度尼西亚 | 62 | 中 |
| 伊拉克 | 964 | 低 |
EXPLAIN
SELECT * FROM phones
WHERE country
LIKE ANY(ARRAY['Ch%','In%'])
Seq Scan on phones (cost = 0.00..25.88
,rows=13,width=36)
Filter: ((country~~ANY('{Ch%,In%}'
::text[]))
| country | phone_code | reliability |
|---|---|---|
| 乍得 | 235 | 中 |
| 中国 | 86 | 高 |
| 哥斯达黎加 | 506 | 高 |
| 印度 | 91 | 中 |
| 印度尼西亚 | 62 | 中 |
| 伊拉克 | 964 | 低 |
EXPLAIN
SELECT * FROM phones
WHERE country = 'Chad'
OR country = 'China'
Seq Scan on phones (cost = 0.00..29.05
,rows=13,width=36)
Filter: ((country='Chad'::text)
OR(country='China'::text))
| country | phone_code | reliability |
|---|---|---|
| 乍得 | 235 | 中 |
| 中国 | 86 | 高 |
| 哥斯达黎加 | 506 | 高 |
| 印度 | 91 | 中 |
| 印度尼西亚 | 62 | 中 |
| 伊拉克 | 964 | 低 |
EXPLAIN
SELECT * FROM phones
WHERE country IN ('Chad','China')
Seq Scan on phones (cost = 0.00..25.88
,rows=13,width=36)
Filter: ((country=ANY('{Chad,China}'
::text[]))
| country | phone_code | reliability |
|---|---|---|
| 乍得 | 235 | 中 |
| 中国 | 86 | 高 |
| 哥斯达黎加 | 506 | 高 |
| 印度 | 91 | 中 |
| 印度尼西亚 | 62 | 中 |
| 伊拉克 | 964 | 低 |
EXPLAIN
SELECT *
FROM phones
WHERE phone_code IN (235,86)
Seq Scan on phones (cost = 0.00..25.88
,rows=13,width=36)
Filter: (phone_code=ANY('{235,86}'
::integer[]))
数字型优势
数字型优势
| 良好 | 更佳 |
|---|---|
| 文本 | 数字 |
| OR | IN,ARRAY |
提升 PostgreSQL 查询性能