大表创建索引

本文介绍在大型表上创建索引时应注意的关键事项,包括确保足够的表空间、调整PGA聚合目标值、扩大临时表空间、使用nologging及parallel参数,并强调创建后索引分析的重要性。

        大表创建索引时间必定会很长,要是中途出错了就的重来,因此在大表上创建索引时,一定要注意了

      1,表空间要够大,不要让其自动增长

      2,创建索引需要排序,使用pga_aggregate_target,要把这个值尽量增大(2048m ,创建完了要改回原值alter system set pga_aggregate_target=500m; );

      3,如果内存不够,需要temp表空间,则要把temp表空间增大

      4,nologging和parallel参数。

      5,创建完成后分析索引,创建完成后要分析索引,否则就是走了索引,查询速度也会很慢。



备注 : 1,v$sort_segment,v$sort_usage可以查看排序相关的情况

              2,SELECT SID,
       decode(totalwork, 0, 0, round(100 * sofar / totalwork, 2)) "Percent",
       message "Message",
       start_time,
       elapsed_seconds,
       time_remaining
  from V$Session_longops    --查看进度

--查看每个事件的进度,好比索引 、建表 、插数据等

SELECT SE.SID,OPNAME,TRUNC(SOFAR / TOTALWORK * 100, 2) || '%' AS PCT_WORK,ELAPSED_SECONDS ELAPSED,ROUND(ELAPSED_SECONDS * (TOTALWORK - SOFAR) / SOFAR) REMAIN_TIME,SQL_TEXT
FROM V$SESSION_LONGOPS SL, V$SQLAREA SA, V$SESSION SE
WHERE SL.SQL_HASH_VALUE = SA.HASH_VALUE
AND SL.SID = SE.SID
AND SOFAR != TOTALWORK
ORDER BY START_TIME;

SQL Server 中,创建并为其创建索引是一个常见的操作,用于优化数据库性能。以下是如何创建并为其添加索引的详细步骤。 ### 创建 首先,使用 `CREATE TABLE` 语句创建一个。例如,创建一个名为 `employees` 的,包含员工的基本信息: ```sql CREATE TABLE employees ( employee_id INT PRIMARY KEY IDENTITY(1,1), first_name NVARCHAR(50), last_name NVARCHAR(50), age INT, department_id INT ); ``` ### 创建索引创建完成后,可以使用 `CREATE INDEX` 语句为其创建索引索引可以显著提高查询性能,尤其是当中数据量较时。 #### 创建普通索引 普通索引是最基本的索引类型,没有任何限制。例如,为 `employees` 的 `age` 列创建一个普通索引: ```sql CREATE INDEX idx_employees_age ON employees (age); ``` #### 创建唯一索引 唯一索引确保索引列中的所有值都是唯一的。例如,为 `employees` 的 `employee_id` 列创建一个唯一索引: ```sql CREATE UNIQUE INDEX idx_employees_employee_id ON employees (employee_id); ``` #### 创建复合索引 复合索引是基于多个列的索引。例如,为 `employees` 的 `first_name` 和 `last_name` 列创建一个复合索引: ```sql CREATE INDEX idx_employees_name ON employees (first_name, last_name); ``` #### 创建聚集索引 聚集索引决定了中数据的物理存储顺序。每个只能有一个聚集索引。例如,为 `employees` 的 `employee_id` 列创建一个聚集索引: ```sql CREATE CLUSTERED INDEX idx_employees_clustered ON employees (employee_id); ``` #### 创建非聚集索引 非聚集索引创建一个单独的索引结构,指向中的数据行。例如,为 `employees` 的 `department_id` 列创建一个非聚集索引: ```sql CREATE NONCLUSTERED INDEX idx_employees_department ON employees (department_id); ``` ### 索引优化建议 - **选择合适的列**:通常在经常用于查询条件、连接或排序的列上创建索引。 - **避免过多索引**:虽然索引可以提高查询速度,但它们会降低插入、更新和删除的速度。 - **定期维护索引**:随着时间的推移,索引可能会变得碎片化,影响性能。定期重建或重新组织索引可以保持其效率。 通过以上步骤,可以在 SQL Server 中创建并为其创建不同类型的索引,以优化数据库的查询性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值