小编bsa*_*ara的帖子

在视图上执行的查询会发生什么?

对视图执行的查询有哪些优化和/或更改?(如果还知道每个主要数据库 - Oracle、SQL Server、Postgres、MySQL/MariaDB - 是否以不同方式处理这个问题,那就太好了)。


例如,假设我有以下观点:

CREATE VIEW my_view AS
  SELECT
      id,
      val0,
      val1,
      val2
    FROM my_table
    WHERE val0 = 42;
Run Code Online (Sandbox Code Playgroud)

...我想对该视图执行以下查询:

SELECT
    id,
    val1
  FROM my_view
  WHERE val2 = 'Fish fingers and custard';
Run Code Online (Sandbox Code Playgroud)

...数据库是优化查询还是本质上执行了两个选择?IE 是否与执行下面的潜在查询 1 或 2 或两者都不相同?


潜在问题 1:

SELECT
    id,
    val1
  FROM (
    SELECT
        id,
        val0,
        val1,
        val2
      FROM my_table
      WHERE val0 = 42
  )
  WHERE val2 = 'Fish fingers and custard';
Run Code Online (Sandbox Code Playgroud)


潜在问题 2:

SELECT
    id,
    val1
  FROM my_table
  WHERE val0 = …
Run Code Online (Sandbox Code Playgroud)

optimization view

7
推荐指数
2
解决办法
1078
查看次数

标签 统计

optimization ×1

view ×1