我知道使用索引可以帮助加速两个或多个表的连接。以下示例使用共享的 Department_id 列连接两个表 emps 和 depts:
select last_name, department_name
from emps join depts
using(department_id);
Run Code Online (Sandbox Code Playgroud)
我的问题是:对两个表之一上的 Department_id 列进行索引会加快此查询的速度,还是必须在两个表的两个 Department_id 列上创建索引才能看到性能的提高?
我执行了以下查询来查找我作为系统连接到的数据库的 SID:
SQL> select sys_context('userenv','instance_name') from dual;
SYS_CONTEXT('USERENV','INSTANCE_NAME')
--------------------------------------------------------------
orcl
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用以下命令连接到系统:
C:\>sqlplus system/system@orcl
SQL*Plus: Release 12.2.0.1.0 Production on Wed Aug 8 23:53:02 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
Run Code Online (Sandbox Code Playgroud)
在指定 SID 的同时,如何以系统身份连接到数据库?
我使用的是 Oracle 数据库 12c。据我所知,表空间是一种逻辑存储单元,由一个或多个数据文件组成,其中存储有关架构对象的数据。我也了解如何创建表空间。
我的问题是:哪些模式对象可以分配给不同的表空间?我们如何使用 SQL 将这些对象分配到表空间?
编辑:
我发现要将表移动到不同的表空间,我们使用以下语法:
ALTER TABLE <TABLE NAME to be moved> MOVE TABLESPACE <destination TABLESPACE NAME>
Run Code Online (Sandbox Code Playgroud)
此外,要将相应的索引移动到表空间,我们在执行上述查询后使用以下语法:
alter index <owner>."<index_name>" rebuild;
Run Code Online (Sandbox Code Playgroud)
但是,是否还有更多架构对象可以移动到如上所述的表空间?