1. foxpro数据库表怎样建立索引
建立索引可以在创建表时建立,
在表设计器里索引标签里设置.
还可以在打开表时,
使用index
on...
命令创建
查询文件的后缀是qpr,
使用do命令手动控制,
也可以加入到数据环境里,由数据环境自动控制
2. sqlserver 怎么建索引
(1)在SQL Server Management Studio中,选择并右击要创建索引的表,从弹出菜单中选择“设计”,打开表设计器。右键单击表设计器,从弹出菜单中选择“索引/键”命令,打开“索引/键”对话框。对话框中列出了已经存在的索引,如下图所示。
(2)单击“添加”按钮。在“选定的主/唯一键或索引”框显示系统分配给新索引的名称。
(3)在“列”属性下选择要创建索引的列。可以选择多达16列。为获得最佳性能,最好只选择一列或两列。对所选的每一列,可指出索引是按升序还是降序组织列值。
(4)如果要创建唯一索引,则在“是唯一的”属性中选择“是”。
(5)设置完成后,单击“确定”按钮。
(6)当保存表时,索引即创建在数据库中。
使用CREATE INDEX语句创建索引:
复制内容到剪贴板
代码:
CREATE[ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX索引名
ON {表名|视图名} (列名[ ASC | DESC ] [ ,...n ] )
例:
在数据库HrSystem中为表Employees创建基于IDCard列的唯一索引IX_Employees,可以使用以下命令:
复制内容到剪贴板
代码:
USE HrSystem
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Employees]ONdbo.Employees(IdCard)
GO
例:
为表Employees创建基于列IDCard的唯一、聚集索引IX_Employees1,可以使用以下命令:
复制内容到剪贴板
代码:
USE HrSystem
GO
CREATE UNIQUE CLUSTERED INDEX [IX_Employees1] ON [dbo].[Employees](IdCard)
GO
需要注意的是,在一个表中只允许存在一个聚集索引。因此,如果表Employees中已经存在一个聚集索引,则执行上面的语句时将会提示下面的错误信息。
消息1902,级别16,状态3,第1行
无法对表'dbo.Employees'创建多个聚集索引。请在创建新聚集索引前删除现有的聚集索引'PK__Employee__263E2DD300551192'。 例:
对表Employees的列Emp_name按照降序创建索引,可以使用以下命令:
复制内容到剪贴板
代码:
USE HrSystem
GO
CREATENONCLUSTERED INDEX [IX_Employees2] ON [dbo].[Employees]
(
[Emp_name] DESC
)
GO
在CREATE INDEX语句中使用INCLUDE子句,可以在创建索引时定义包含的非键列,其语法结构如下:
复制内容到剪贴板
代码:
CREATENONCLUSTERED INDEX 索引名
ON { 表名| 视图名 } ( 列名 [ ASC | DESC ] [ ,...n ] )
INCLUDE (<列名1>, <列名2>, [,… n])
例: 在表Employees上创建非聚集索引IX_Wage,索引中的键列为Wage,非键列为Emp_name、Sex和Title,具体语句如下:
复制内容到剪贴板
代码:
USEHrSystem
GO
CREATENONCLUSTERED INDEX IX_Wage
ON Employees ( Wage )
INCLUDE (Emp_name, Sex, Title)
GO
例: 在创建索引IX_Wage后,当表Employees中的数据量比较大时,执行下面的SELECT语句将会明显地改进查询效率。
复制内容到剪贴板
代码:
USEHrSystem
GO
SELECTEmp_name, Sex, Title, Wage
FROMEmployees
WHEREWage BETWEEN 1000 AND 3000
GO
修改索引:
在SQL Server Management Studio中,选择并右击要创建索引的表,从弹出的菜单中选择“设计表”,打开表设计器。右键单击表设计器,从弹出菜单中选择“索引/键”命令,打开“索引/键”对话框,并查看已经存在的索引及修改索引的属性信息。
也可以使用ALTER INDEX语句修改索引,其基本语法如下:
复制内容到剪贴板
代码:
ALTER INDEX { 索引名| ALL }
ON <表名|视图名>
{ REBUILD | DISABLE | REORGANIZE }[ ; ]
ALTER INDEX语句的参数比较复杂,这里只介绍它的基本使用情况。参数说明如下:
REBUILD指定重新生成索引。 DISABLE指定将索引标记为已禁用。 REORGANIZE指定将重新组织的索引叶级。
例:
要禁用索引IX_Employees,可以使用下面的语句:
复制内容到剪贴板
代码:
USE HrSystem
GO
ALTERINDEX IX_Employees ON Employees DISABLE
GO
删除索引:
在SQL Server Management Studio中,选择并右击要创建索引的表,从弹出的菜单中选择“设计表”。打开表设计器。右键单击表设计器,从弹出菜单中选择“索引/键”命令,在打开的“索引/键”对话框中列出了已经存在的索引。单击“删除”按钮,即可删除索引信息。
复制内容到剪贴板
代码:
DROP INDEX 表名.索引名|视图名.索引名[ ,...n ]
总结:
o(1)索引并非越多越好,一个表中如果有大量的索引,不仅占用大量的磁盘空间,而且会影响INSERT、DELETE、UPDATE等语句的性能。因为当表中数据更改的同时,索引也会进行调整和更新。
o(2)避免对经常更新的表进行过多的索引,并且索引中的列尽可能少。而对经常用于查询的字段应该创建索引,但要避免添加不必要的字段。
o(3)数据量小的表最好不要使用索引,由于数据较少,查询花费的时间可能比遍历索引的时间还要短,索引可能不会产生优化效果。
o(4)在条件表达式中经常用到的、不同值较多的列上建立索引,在不同值少的列上不要建立索引。比如在学生表的“性别”字段上只有“男”与“女”两个不同值,因此就无须建立索引。如果建立索引,不但不会提高查询效率,反而会严重降低更新速度。
o(5)当唯一性是某种数据本身的特征时,指定唯一索引。使用唯一索引能够确保定义的列的数据完整性,提高查询速度。
o(6)在频繁进行排序或分组(即进行GROUPBY或ORDERBY操作)的列上建立索引,如果待排序的列有多个,可以在这些列上建立组合索引。
3. 在sql中,建立索引用的命令是
创建索引的操作,可以使用alter命令或者create命令,其语法如下
alter table 表名 add index 索引名 (column_list) ;
alter table 表名 add unique (column_list) ;
alter table 表名 add primary key (column_list) ;
这三个分别为创建一般索引,唯一索引,主键索引,其中column_list为表的 字段名称,多个字段可以使用逗号隔开。
create的方式创建索引,不能创建主键索引
create index 索引名on 表名 (column_list) ;
create unique index 索引名 on 表名 (column_list) ;
4. postgres怎么在线创建索引
我们知道数据库创建索引可能会锁住创建索引的表,并且用该表上的一次扫描来执行整个索引的构建,这样在创建索引时会影响在线业务,非常大的表创建索引可能会需要几个小时,这样阻塞业务是不被允许的。商业数据库一般都提供在线创建索引的能力,PostgreSQL作为开源数据库,也提供了这样的功能。我们在CREATE INDEX命令中新增CONCURRENTLY选项来实现索引的在线创建。 但是concurrently在线创建索引也并不是那么完美,当使用这个选项时,PostgreSQL必须执行该表的两次扫描,此外它必须等待所有现有可能会修改或者使用该索引的事务终止,甚至它可能会等待一个不相干的事务终止。因此这种方法比起普通的索引创建过程来说要做更多工作并且需要更多时间。同时,索引的创建会带来较大的CPU和I/O消耗。甚至在极端情况下,如果数据库存在长事务,我们发现create index命令根本无法结束。 从官方文档中我们可以了解到如下信息,在并发(concurrently)索引构建中,索引实际上是在事务中被构建的,它在两个事务中发生两次表扫描。在每一次表扫描之前,索引构建必须等待对该表做过修改的现有事务终止。在第二次扫描之后,索引构建必须等待任何持有早于第二次扫描的快照的事务终止。然后该索引最终能被标记为可用,CREATE INDEX命令完成。
开启第一个事务,拿到当前快照snapshot
2.等待所有修改过该表的事务结束
3.扫描该表,第一次创建索引
4.结束第一个事务
5.开启第二个事务,拿到当前快照snapshot2
6.等待所有修改过该表的事务结束
7.第二次扫描该表,将两次快照之间变更的记录,合并到索引
8.上一步更新索引结束后,等待snapshot2之前开启的所有事务结束
9.结束索引创建,索引变为可用 那么这里有个疑问,为什么需要两次扫描、两次创建索引?其实想想也很好解释。因为在第一次创建索引的时候不阻塞读写,这段时间内发生的变更需要在第二次扫描的时候合并更新进索引。
5. 如何创建索引
首先有一点你没有弄明白,数据库表才可以建主索引,自由表是不能建主索引的。也就是说数据库表可以建4种索引:主索引、候选索引、普通索引、唯一索引。但自由表只能建立3种索引:候选索引、普通索引、唯一索引。 如果要建主索引,可以在表设计器窗口的“索引”选项卡中建立,但index on 命令中不能建立主索引,此命令只能建候选索引、普通索引和唯一索引。
6. VF中如何建立索引,用命令。从建表到用命令建立索引
建表命令:CREAT 表名建立索引步骤及命令:USE 要建立索引的表名INDEX ON 索引关键字 TO 索引文件名索引关键字:是表中的一个字段,也就是你要以哪个字段为关键字进行索引索引文件名:建立的索引文件的文件名,可以和表的文件名相同,也可以不同。
7. vfp 利用字段建立索引,命令是什么
index on 姓名+str(总分) tag xx
索引关键字表达式:姓名+str(总分)
8. 用index命令怎么建立主索引和普通索引及唯一引
用inde命令只能创建普通索引及唯一索引 主索引用 alter命令创建,用inde 创建普通索引是:inde on <索引关键字> tag <索引标识名>
唯一索引:inde on <索引关键字> tag <索引标识名> uniq [Asce] [desc]
9. sql创建索引的命令
1.添加PRIMARY KEY(主键索引)
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
2.添加UNIQUE(唯一索引)
mysql>ALTER TABLE `table_name` ADD UNIQUE (
`column`
)
3.添加INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
4.添加FULLTEXT(全文索引)
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
5.添加多列索引
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
10. 如何利用MySQL命令创建,查看,重建和删除索引
第一步,创建数据库表t_tree_info,命令如下:
create table t_tree_info(
id int(8),
tno int(4),
tname varchar(20),
tdesc varchar(100)
);
如下图所示:
第二步,向表里插入3条数据,插入后查看表记录,如下图所示:
第三步,创建数据库索引tree_name,命令如下:
create index tree_name on t_tree_info (tname(20));
如下图所示:
第四步,查看数据库表索引,利用show命令
show index from t_tree_info;
如下图所示:
第五步,重建索引,利用repari命令
repair table t_tree_info quick;
如下图所示:
第六步,索引创建好了,在不使用该索引时,可以删除
drop index tree_name on t_tree_info;
如下图所示: