nav*_*ige 4 sql postgresql common-table-expression
是否可以在postgresql中手动更改执行计划的操作顺序?例如,如果我总是希望在过滤之前进行排序操作(尽管在正常使用postgresql时没有意义),是否可以通过例如更改操作的内部成本来手动强制执行?
如果我实现自己的功能怎么样?是否有可能始终在sql语句的最后执行这样的函数?
使用子查询或CTE首先强制执行某些操作.喜欢:
SELECT *
FROM (
SELECT *
FROM tbl
LIMIT 10
) x
ORDER BY 1;
Run Code Online (Sandbox Code Playgroud)
当然,你需要了解自己在做什么.在示例中,我选择10个任意行,然后按第一列排序.
您可以连续使用多个子查询层或多个CTE.
与CTE相同的例子:
WITH x AS (
SELECT *
FROM tbl
LIMIT 10
)
SELECT *
FROM x
ORDER BY 1;
Run Code Online (Sandbox Code Playgroud)
对于简单查询,子查询通常更快,CTE提供其他功能(例如在不同查询级别的多个位置重用相同的CTE).
| 归档时间: |
|
| 查看次数: |
1744 次 |
| 最近记录: |