精华内容
下载资源
问答
  • oracle创建索引: CREATE INDEX 索引名 on要创建索引的...oracle索引,索引的建立、修改、删除 索引 索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。建立索引是一项技...

    oracle创建索引:
    CREATE INDEX 索引名 on要创建索引的表(索引字段) tablespace 表空间
    eg:Create INDEX ABC_INDEX ON TABLE_A(NAME) TABLESPACE SCHEAM;

    oracle索引,索引的建立、修改、删除

    索引
    索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。建立索引是一项技术性要求高的工作。一般在数据库设计阶段的与数据库结构一道考虑。应用系统的性能直接与索引的合理直接有关。下面给出建立索引的方法和要点。
    §3.5.1 建立索引

    1. CREATE INDEX命令语法:
    CREATE INDEX
    CREATE [unique] INDEX [user.]index
    ON [user.]table (column [ASC | DESC] [,column
    [ASC | DESC] ] ... )
    [CLUSTER [scheam.]cluster]
    [INITRANS n]
    [MAXTRANS n]
    [PCTFREE n]
    [STORAGE storage]
    [TABLESPACE tablespace]
    [NO SORT]
    Advanced
    

    其中:
    schema ORACLE模式,缺省即为当前帐户
    index 索引名
    table 创建索引的基表名
    column 基表中的列名,一个索引最多有16列,long列、long raw
    列不能建索引列
    DESC、ASC 缺省为ASC即升序排序
    CLUSTER 指定一个聚簇(Hash cluster不能建索引)
    INITRANS、MAXTRANS 指定初始和最大事务入口数
    Tablespace 表空间名
    STORAGE 存储参数,同create table 中的storage.
    PCTFREE 索引数据块空闲空间的百分比(不能指定pctused)
    NOSORT 不(能)排序(存储时就已按升序,所以指出不再排序)

    2.建立索引的目的:

    建立索引的目的是:
    l 提高对表的查询速度;
    l 对表有关列的取值进行检查。

    但是,对表进行insert,update,delete处理时,由于要表的存放位置记录到索引项中而会降低一些速度。
    注意:一个基表不能建太多的索引;
    空值不能被索引
    只有唯一索引才真正提高速度,一般的索引只能提高30%左右。

    Create index ename_in on emp (ename,sal);

    例1:商场的商品库表结构如下,我们为该表的商品代码建立一唯一索引,使得在前台POS收款时提高查询速度。

    Create table good(good_id number(8) not null,/* 商品条码 */
                       Good_desc varchar2(40), /* 商品描述 */
                       Unit_cost number(10,2) /* 单价 */
                       Good_unit varchar2(6), /* 单位 */
                       Unit_pric number(10,2) /* 零售价 */
                       );
    

    注:提高查询速度的方法还有在表上建立主键,主键与唯一索引的差别
    在于唯一索引可以空,主键为非空,比如:

                        Good_desc Varchar2(40),
                        Unit_cost number(10,2),
                        Good_unit char(6),
                        Unit_pric number(10,2)
                       );
    

    §3.5.2 修改索引
    对于较早的Oracle版本,修改索引的主要任务是修改已存在索引的存储参数适应增长的需要或者重新建立索引。而Oracle8I及以后的版本,可以对无用的空间进行合并。这些的工作主要是由管理员来完成。

    简要语法结构如下,更详细的语法图见电子文档《Oracle8i Reference 》 中的 Alter index.

    ALTER [UNIQUE] INDEX [user.]index
    [INITRANS n]
    [MAXTRANS n] 
    REBUILD 
    [STORAGE n]
    

    其中:
    REBUILD 是 根据原来的索引结构重新建立索引,实际是删除原来的索引后再重新建立。

    提示:DBA经常用 REBUILD 来重建索引可以减少硬盘碎片和提高应用系统的性能。

    例:
    alter index pk_detno rebuild storage(initial 1m next 512k);

    ALTER INDEX emp_ix REBUILD REVERSE;

    Oracle8i 的新功能可以对索引的无用空间进行合并,它由下面命令完成:

    ALTER INDEX . . . COALESCE;

    例如:

    ALTER INDEX ename_idx COALESCE;

    §3.5.3 删除索引
    当不需要时可以将索引删除以释放出硬盘空间。命令如下:

    DROP INDEX [schema.]indexname

    例如:

    sql> drop index pk_dept;

    注:当表结构被删除时,有其相关的所有索引也随之被删除。

    §3.6 新索引类型
    Oracle8i为了性能优化而提供新的创建新类型的索引。这些新索引在下面介绍:

    §3.6.1 基于函数的索引
    基于函数的索引就是存储预先计算好的函数或表达式值的索引。这些表达式可以是算术运算表达式、SQL或PL/SQL函数、C调用等。值得注意的是,一般用户要创建函数索引,必须具有GLOBAL QUERY REWRITE和CREATE ANY INDEX权限。否则不能创建函数索引,看下面例子:

    例1:为EMP表的ename 列建立大写转换函数的索引idx :

    CREATE INDEX idx ON emp ( UPPER(ename));

    这样就可以在查询语句来使用:

    SELECT * FROM EMP WHERE UPPER(ename) LIKE ‘JOH%’;

    例2:为emp 的工资和奖金之和建立索引:

    1. 查看emp 的表结构:
     Name Null? Type
     ----------------------------------------- -------- ------------------
     EMPNO NOT NULL NUMBER(4)
     ENAME VARCHAR2(10)
     JOB VARCHAR2(9)
     MGR NUMBER(4)
     HIREDATE DATE
     SAL NUMBER(7,2)
     COMM NUMBER(7,2)
     DEPTNO NUMBER(2)
    

    2)没有授权就创建函数索引的提示:

    SQL> create index sal_comm on emp ( (sal+comm)*12, sal,comm)
     2 tablespace users storage(initial 64k next 64k pctincrease 0);
    create index sal_comm on emp ( (sal+comm)*12, sal,comm)                                        *
    ERROR at line 1:
    ORA-01031: insufficient privileges
    
    1. 连接到DBA帐户并授权:
    SQL> connect sys/sys@ora816
    Connected.
    SQL> grant GLOBAL QUERY REWRITE to scott;
    
    Grant succeeded.
    
    
    SQL> grant CREATE ANY INDEX to scott;
    
    
    Grant succeeded.
    
    

    4)在连接到scott帐户,创建基于函数的索引:

    SQL> connect scott/tiger@ora816
    Connected.
    SQL> create index sal_comm on emp ( (sal+comm)*12, sal,comm)
     2 tablespace users storage(initial 64k next 64k pctincrease 0);
    
     
    Index created.
    
    

    1)在查询中使用函数索引:

    SQL> select ename,sal,comm from emp where (sal+comm)*12 >5000;
    
    
    ENAME SAL COMM
    ---------------------- ---------------- ----------------
    ALLEN 1600 300
    WARD 1250 500
    MARTIN 1250 1400
    TURNER 1500 0
       赵元杰 1234.5 54321
    
    

    §3.6.2 反向键索引
    反向键索引通过反向键保持索引的所有叶子键上的插入分布。有时,可用反向键索引来避免不平衡的索引。对于反向键索引可以进行下面操作:
    l 通过在ALTER INDEX命令后加REBUILD NOREVERSE或REBUILD REVERSE子句来使索引边为反向键索引或普通索引;
    l 采用范围扫描的查询不能使用反向键索引;
    l 位图索引不能反向;
    l 索引编排表不能反向。

    例1:创建一个反向键索引:
    CREATE INDEX i ON t (a,b,c) REVERSE;

    例2:使一个索引变为反向键索引:
    ALTER INDEX i REBUILD NOREVERSE;

    §3.6.3 索引组织表
    与普通的索引不一样,索引组织表(Index_Organized Table)是根据表来存储数据,即将索引和表存储在一起。这样的索引结构表(Index_organized table—IOT)的特点是:对表数据的改变,如插入一新行、删除某行都引起索引的更新。
    索引组织表就象带一个或多个列所有的普通表一样,但索引组织表在B-树索引结构的叶节点上存储行数据。通过在索引结构中存储数据,索引组织表减少了总的存储量,此外,索引组织表也改善访问性能。
    由于表中的行与B_树索引存放在一起,每个行都没有ROWID,而是用主键来标识。但是Oracle会“猜”这些行的位置并为每个行分配逻辑的ROWID。此外,你可以为这样的表建立第二个索引。

    创建索引结构表也是用CREATE TABLE 命令加ORGANIZATION INDEX关键字来实现。但是,这样的表在创建完后,你还必须为该表建立一个主键。

    例子:

    (
    Pk_col1 number(4),
    Pk_col2 varchar2(10),
    Non_pk_col1 varchar2(40),
    Non_pk_col2 date,
    CONSTRAINT pk_iot PRIMARY KEY
                     ( pk_col1, pk_col2)
    )
    ORGANIZATION INDEX
    TABLESPACE INDEX
    STORAGE( INITIAL 1M NEXT 512K PCTINCREASE 0 );
    
    

    索引组织表有些限制:
    l 不能使用唯一约束;
    l 必须具有一个主键;
    l 不能建立簇;
    l 不能包含LONG类型列;
    l 不支持分布和复制。
    提示:如果建立了索引组织表,则会在DBA_TABLES中的IOT_TYPE和IOT_NAME列上记录有索引组织表的信息。

    例1.修改索引结构表 docindex 的索引段的INITRANS参数:

    ALTER TABLE docindex INITRANS 4;

    例2.下面语句加一个的溢出数据段到索引组织表 docindex中:

    ALTER TABLE docindex ADD OVERFLOW;

    例3.下面语句为索引组织表 docindex的溢出数据段修改INITRANS参数:

    ALTER TABLE docindex OVERFLOW INITRANS 4;

    ============================================================================================================
    适当的使用索引可以提高数据检索速度,可以给经常需要进行查询的字段创建索引

    oracle的索引分为5种:唯一索引,组合索引,反向键索引,位图索引,基于函数的索引

    创建索引的标准语法:

    CREATE INDEX 索引名 ON 表名 (列名) TABLESPACE 表空间名;

    创建唯一索引:

    CREATE unique INDEX 索引名 ON 表名 (列名) TABLESPACE 表空间名;

    创建组合索引:

    CREATE INDEX 索引名 ON 表名 (列名1,列名2)

     TABLESPACE 表空间名; 
    

    创建反向键索引:

    CREATE INDEX 索引名 ON 表名 (列名) reverse

     TABLESPACE 表空间名; 
    

    查看文章
    oracle 查看索引类别以及查看索引字段被引用的字段方法2008年01月04日 星期五 13:20查看索引个数和类别

    select * from user_indexes where table='表名' ;

    查看索引被索引的字段

    SQL>select * from user_ind_columns where index_name=upper('&index_name');

    PS:

    查看某表的约束条件

    SQL>select constraint_name, constraint_type,search_condition, r_constraint_name 
    from user_constraints where table_name = upper('&table_name'); 
    
    
    SQL>select c.constraint_name,c.constraint_type,cc.column_name 
    from user_constraints c,user_cons_columns cc 
    where c.owner = upper('&table_owner') and c.table_name = upper('&table_name') 
    and c.owner = cc.owner and c.constraint_name = cc.constraint_name 
    order by cc.position;
    

    查看视图的名称

    SQL>select view_name from user_views;

    展开全文
  • 【MySQL进阶学习】子查询与索引的建立

    千次阅读 多人点赞 2020-04-03 12:50:23
    子查询与索引的建立

    子查询

    子查询是一种嵌套在其他SQL(增、删、改、查)里的查询


    子查询返回单条单列

    子查询返回单条单列,显而易见,单行单列即为一个值,这个值可以用来当筛选当中的值使用,只不过得加上括号。

    例:
    查询“计算机工程系”有哪些专业。

    SELECT
    	MajorName
    FROM
    	major
    WHERE
    	DepartmentID = (SELECT
    	DepartmentID 
    FROM 
    	department
    WHERE
    	DepartmentName = '计算机工程系');
    

    where里面,我们DepartmentID判断等于的,不是直接的一个值,而是用department筛选出来的一个值,从而进行再次的筛选。这就是我们所说的 子查询返回单条单列

    其中

    (SELECT
    	DepartmentID 
    FROM 
    	department
    WHERE
    	DepartmentName = '计算机工程系')
    

    在这里,符合DepartmentName = '计算机工程系'筛选出来,出来一个筛选出一个,然后用于where筛选。

    子查询返回多条记录

    子查询返回多条记录,和子查询返回单条单列用法本质上是一样的,都是筛选出数据,然后再供使用。

    例:
    查询CourseID10101,ExamScore为98分的学生的学生信息。

    SELECT *
    FROM
    	student
    WHERE
    	StuID = 
    	(SELECT 
    		StuID 
    	FROM 
    		score
    	WHERE 
    		ExamScore = 98 AND 
    		CourseID = 10101);
    

    **我们想要找到题目当中的数据,但是图中明显不是两个表,而且还需要筛选数据才能得到想要的表,所以我们就用到了 子查询返回多条记录 ,上面的代码,后面括号内的代码,是筛选过的StuID,从而再进行对studen表的筛选。CourseID10101,ExamScore为98分为筛选出来的数据,所以在表中,我们进行了ExamScore = 98 AND CourseID = 10101
    子查询返回多条记录 中,我们会使用到以下运算符:IN,ANY | SOME,ALL

    • in:代表集合,为存在于这个集合里面。
    • any:<any代表小于里面的一个数值,<any代表大于里面的一个数值,=any和in的效果一样(有一个就行)
    • all:<all代表小于里面的所有数值,<all代表大于里面的所有数值,=all代表无意义(所有的才行)

    子查询返回多条记录多列查询

    子查询返回多条记录多列查询 可以把筛选出来的数据当成表使用,也可以当成条件使用,可以根据具体情况而改变。
    例:
    查询周一有课的班级,班级编号,多少节课。

    SELECT
    	a1.ClassName,
    	a2.ClassroomID,
    	a2.Weekday,
    	a2.Part
    FROM
    	class a1,
    	(SELECT 
    		ClassID,
    		ClassroomID,
    		Weekday,
    		Part 
    	FROM 
    		teachingcourse 
    	WHERE Weekday = 'mon') a2
    WHERE
    	a1.ClassID = a2.ClassID;
    
    

    在这里a2是筛选完条件的表,筛选的条件是周一有课,然后和class表建立连接,查询出想要的数据。

    如若对表与表的连接,不是很熟悉,看官可先参考---->>join多表查询

    索引

    重要性:
    信息查询,检索是软件系统中应用最广泛的操作,而查询速度的快慢将直接影响软件系统的型能和用户的体验。
    可以利用索引和表分区提高查询性能。索引是提高数据检索的有效手段对于任何DBMS(数据库管理系统),索引都是进行优化的主要因素。
    数据量小时,效果不明显,数据量大时,效果就明显了。
    通俗来说:数据库索引就好比一本字典,如果没有索引,想要找的话就得一页页的翻找,如果有了索引,就如同有了目录,加快了查找的速度。

    聚簇索引

    以字典为例,你想找第八课,你如若翻到了第五课,则需要继续往后翻,如果翻到了第十一课,则需要往回翻。

    • “聚簇索引”默认为主键,如果没有主键,则会选择一个唯一的非空的索引代替,如若还是没有,则会隐式定义一个主键来作为“聚簇索引”。
    • “聚簇索引”是不能选择的,他的索引号(第八课)和对应的记录(内容)是存在一起的。

    优缺点

    • 优势:为主键为自增时,做按主键的范围查询
    • 缺点:通常按主键,主键如果是uuid

    非聚簇索引

    还是以字典为例,你想找一个为green的单词,你翻到了字典的目录,是按照单词首字母排序的,需要先找到G,任何再找到green。对应就会有页数。

    索引的数据结构分类

    B+TREE

    特点:

    • 普通索引
    • 唯一性索引:普通索引+字段取值必须唯一
    • 主键自带索引
    • 联合索引(多列)

    索引用的数据结构是b+tree,b是balance成为平衡树,是二叉树基础上衍生出的结构。

    可以图像化理解的网站---->图像化理解二叉自平衡二叉查找树(AVL 树)
    图像化理解自平衡二叉查找树(AVL 树)

    HASH索引

    特点

    • 很快,占内存,不适合做范围查找其他。

    可以图像化理解的网站---->图像化理解哈希表)
    图像化理解哈希表

    其他类型
    • r-tree:针对几何图形
    • 全文索引:针对大文本,比%模糊

    索引的建立

    create index 语句创建索引

    格式:

    CREATE [unique|fulltext|spatial] 
    INDEX 
    	索引名 [using btree|hash] 
    ON 
    	表名(字段名[(length)] [asc|desc] );
    

    其中的可选为:

    • [unique|fulltext|spatial] :索引类型
    • [using btree|hash]:索引的数据类型
    • length:表示使用索引列的前多少个字符创建索引
    • [asc|desc]:表示索引字段值的排序顺序,省略时默认为 asc 升序排列

    例:
    给score表中的StuiID建立索引
    CREATE INDEX idx_stuid ON score(StuID);

    问题来了,建立完索引之后,如何查看自己的索引,或者如何检查自己建立没建立索引呢?

    语法如下:
    SHOW INDEX FROM 表名;

    例如我们现在要查询studen表里面的索引:
    索引查询
    这是一个字段名建立索引的方法,还有就是,两个字段名一起建立索引,这里我们需要格外的注意字段名的顺序,不然的话,就会造成无法查询等一系列问题。
    语法格式如下:

    CREATE [unique|fulltext|spatial] 
    INDEX 
    	索引名 [using btree|hash] 
    ON 
    	表名(字段名[(length)],字段名[(length)] [asc|desc] );
    

    由于和单个创建索引一样,这里就不一样详述了,切记一定要记住顺序问题。
    如若用(字段名1,字段名2)两个字段名建立索引,则:

    1. 按字段名1单列查的问题。
    2. 按字段名1,字段名2双列一起查的问题。
    3. 不能解决按字段名2单列查的问题。

    建立索引已经学会了,也学会了如何检查有没有索引,接下来该查看查询的时候是否使用索引了。

    直接在select前面添加explain

    对,就是这么简单,记住explain关键字就可以了。
    例:
    explain关键字
    从图中我们可以看出来,查询时没有使用索引,这是为什么呢?
    因为用模糊搜索,前面带%的不使用索引。这个得记住,不然如果面试有咋办。

    alter table语句创建索引

    格式:

    ALTER TABLE 
    	表名 
    ADD INDEX [索引名] [索引类型](索引字段);
    

    在其中有着多种形式,比如主键,唯一性,外键等,格式如下:

    主键:
    ADD [constraint 约束名] PRIMARY KEY [索引类型](主键字段) 
    唯一性
    ADD [constraint 约束名] UNIQUE [索引名] [索引类型](唯一键字段)
    外键
    ADD [constraint 约束名] FOREIGN KEY [索引名] (外键字段) REFERENCE...
    
    

    部分笔记来自老师授课的教案:番茄发烧了

    尾记:编程我也是初学者,难免有写错的地方,希望大家看完之后,发现错误可以评论出来,谢谢大家

    展开全文
  • 复合索引的建立原则

    千次阅读 2016-01-11 19:18:56
    复合索引的建立原则: 如果您很可能仅对一个列多次执行搜索,则该列应该是复合索引中的第一列。如果您很可能对一个两列索引中的两个列执行单独的搜索,则应该创建另一个仅包含第二列的索引。 如上图所示,如果...

    复合索引的建立原则:

    如果您很可能仅对一个列多次执行搜索,则该列应该是复合索引中的第一列。如果您很可能对一个两列索引中的两个列执行单独的搜索,则应该创建另一个仅包含第二列的索引。
    如上图所示,如果查询中需要对年龄和性别做查询,则应当再新建一个包含年龄和性别的复合索引。
    包含多个列的主键始终会自动以复合索引的形式创建索引,其列的顺序是它们在表定义中出现的顺序,而不是在主键定义中指定的顺序。在考虑将来通过主键执行的搜索,确定哪一列应该排在最前面。
    请注意,创建复合索引应当包含少数几个列,并且这些列经常在select查询里使用。在复合索引里包含太多的列不仅不会给带来太多好处。而且由于使用相当多的内存来存储复合索引的列的值,其后果是内存溢出和性能降低。

             
    复合索引对排序的优化:

    复合索引只对和索引中排序相同或相反的order by 语句优化。
    在创建复合索引时,每一列都定义了升序或者是降序。如定义一个复合索引:

    Sql代码  收藏代码
    1. CREATE INDEX idx_example   
    2. ON table1 (col1 ASC, col2 DESC, col3 ASC)  
     
    其中 有三列分别是:col1 升序,col2 降序, col3 升序。现在如果我们执行两个查询
    1:Select col1, col2, col3 from table1 order by col1 ASC, col2 DESC, col3 ASC
      和索引顺序相同
    2:Select col1, col2, col3 from table1 order by col1 DESC, col2 ASC, col3 DESC
     和索引顺序相反
    查询1,2 都可以别复合索引优化。
    如果查询为:
    Select col1, col2, col3 from table1 order by col1 ASC, col2 ASC, col3 ASC
      排序结果和索引完全不同时,此时的查询不会被复合索引优化。


    查询优化器在在where查询中的作用:

    如果一个多列索引存在于 列 Col1 和 Col2 上,则以下语句:Select   * from table where   col1=val1 AND col2=val2 查询优化器会试图通过决定哪个索引将找到更少的行。之后用得到的索引去取值。
    1. 如果存在一个多列索引,任何最左面的索引前缀能被优化器使用。所以联合索引的顺序不同,影响索引的选择,尽量将值少的放在前面。
    如:一个多列索引为 (col1 ,col2, col3)
        那么在索引在列 (col1) 、(col1 col2) 、(col1 col2 col3) 的搜索会有作用。

    Sql代码  收藏代码
    1. SELECT * FROM tb WHERE  col1 = val1  
    2. SELECT * FROM tb WHERE  col1 = val1 and col2 = val2  
    3. SELECT * FROM tb WHERE  col1 = val1 and col2 = val2  AND col3 = val3  
     

    2. 如果列不构成索引的最左面前缀,则建立的索引将不起作用。
    如:
    Sql代码  收藏代码
    1. SELECT * FROM  tb WHERE  col3 = val3  
    2. SELECT * FROM  tb  WHERE  col2 = val2  
    3. SELECT * FROM  tb  WHERE  col2 = val2  and  col3=val3  
     
    3. 如果一个 Like 语句的查询条件不以通配符起始则使用索引。
    如:%车 或 %车%   不使用索引。
        车%              使用索引。
    索引的缺点:
    1.       占用磁盘空间。
    2.       增加了插入和删除的操作时间。一个表拥有的索引越多,插入和删除的速度越慢。如 要求快速录入的系统不宜建过多索引。

    下面是一些常见的索引限制问题

    1、使用不等于操作符(<>, !=)
    下面这种情况,即使在列dept_id有一个索引,查询语句仍然执行一次全表扫描
    select * from dept where staff_num <> 1000;
    但是开发中的确需要这样的查询,难道没有解决问题的办法了吗?
    有!
    通过把用 or 语法替代不等号进行查询,就可以使用索引,以避免全表扫描:上面的语句改成下面这样的,就可以使用索引了。

    Sql代码  收藏代码
    1. select * from dept shere staff_num < 1000 or dept_id > 1000;  
     

    2、使用 is null 或 is not null
    使用 is null 或is nuo null也会限制索引的使用,因为数据库并没有定义null值。如果被索引的列中有很多null,就不会使用这个索引(除非索引是一个位图索引,关于位图索引,会在以后的blog文章里做详细解释)。在sql语句中使用null会造成很多麻烦。
    解决这个问题的办法就是:建表时把需要索引的列定义为非空(not null)

    3、使用函数
    如果没有使用基于函数的索引,那么where子句中对存在索引的列使用函数时,会使优化器忽略掉这些索引。下面的查询就不会使用索引:
    Sql代码  收藏代码
    1. select * from staff where trunc(birthdate) = '01-MAY-82';  
     
    但是把函数应用在条件上,索引是可以生效的,把上面的语句改成下面的语句,就可以通过索引进行查找。
    Sql代码  收藏代码
    1. select * from staff where birthdate < (to_date('01-MAY-82') + 0.9999);  
     

    4、比较不匹配的数据类型
    比较不匹配的数据类型也是难于发现的性能问题之一。
    下面的例子中,dept_id是一个varchar2型的字段,在这个字段上有索引,但是下面的语句会执行全表扫描。
    Sql代码  收藏代码
    1. select * from dept where dept_id = 900198;  
     
    这是因为oracle会自动把where子句转换成to_number(dept_id)=900198,就是3所说的情况,这样就限制了索引的使用。
    把SQL语句改为如下形式就可以使用索引
    Sql代码  收藏代码
    1. select * from dept where dept_id = '900198';  
    展开全文
  • sql server中索引的建立与删除 一 建立索引 1. student表建立学号升序索引 create unique index stusno on student(sno); 2.sc表按学号升序和课程号降序建唯一索引 create unique index scno on sc(sno...

    sql server中索引的建立与删除


    一 建立索引

    1. student表建立学号升序索引

    create unique index stusno on student(sno);

    2. sc表按学号升序和课程号降序建唯一索引

    create unique index scno on sc(sno ASC,cno Desc);

    二 修改索引名

    #scno 旧索引名
    alter index scno rename to scsno;

    三 删除索引

    drop index on scno on sc;

    展开全文
  • mysql多列索引的建立和优化

    千次阅读 2018-11-21 16:58:21
    对于单列索引,没有太多的话题,但是对于多列索引的建立,一个好的多列索引能使用的场景应可以涵盖很多,减少其他不必要的索引空间,就有很多事情需要注意。 0.首先来了解索引的物理结构: ... 1.where 子句中的多列...
  • 索引,索引的建立、修改、删除

    千次阅读 2013-07-21 16:06:02
    索引,索引的建立、修改、删除  来自:http://www.cnblogs.com/djcsch2001/articles/1823459.html#top 2007-10-05 13:29 来源: 作者: 网友评论 0 条 浏览次数 2986  索引 索引是关系数据库中用于存放每一条...
  • 普通索引的建立及普通索引的排序

    千次阅读 2019-05-15 21:36:57
    在实际应用索引时,在建表的同时建立索引,即在建表的sql中添加建立索引的sql,应用实例如下: CREATE TABLE tbl_camera_info ( `cameraId` varchar(64) NOT NULL COMMENT '镜头唯一编号,统一监控平台', `...
  • 索引的建立与删除

    2016-06-07 17:44:44
    建立索引根据是加快查询速度的有效手段。用户可以根据应用环境的需要,在基本表上建立一个或多个索引,以提供多种存取路径,加快查找速度。...建议建立索引的情况 主码和外码一般会建立索引 以读为主
  • 6.索引的建立和优化

    千次阅读 2011-01-16 16:32:00
    <br />索引的建立和优化1.  索引建立的过程 1.1 Lucene索引机制 首先,将不同格式的文件通过相应的解析器解析成文本形式 然后,调用分析器对文本进行分析,主要是做分词,以构建倒排索引...
  • mysql数据库索引的建立以及性能测试

    千次阅读 2014-02-19 15:01:33
    ##---------mysql学习(四)索引的建立--------### #今天突然开窍了,所以补充点索引方面的知识。 #创建索引,这里仍然以数据较少的mytab表为例: #原数据为: mysql> set names gbk; Query OK, 0 rows ...
  • mysql 索引的建立原则

    千次阅读 2017-04-05 16:17:16
    1、索引分四类:index ---- 普通索引,数据可以重复 fulltext ---- 全文索引,用来对大表的文...primary key ---- 主键索引,也就是在唯一索引的基础上相应的列必须为主键 2、使用索引需注意:(1). 只对 where 和order by
  • 倒排索引的建立

    千次阅读 2015-11-04 15:51:40
    倒排文件索引(Inverted File Index)的建立 原文出处:http://www.cnblogs.com/ywl925/articles/2811869.html。作者是ywl925, ta的宣言是“不断学习--不要心慌,不要着急”。文章讲倒排索引很清楚。 ...
  • 一、简介 索引是关系数据库中用于存放每一条记录的一种对象,主要目的...应用系统的性能直接与索引的合理直接有关二、 语法2.1 创建索引CREATE INDEX CREATE [unique] INDEX [user.]index ON [user.]table (column [AS
  • 建立索引 例:为学生student 表按学号升序建唯一索引 Create unique index stusno on student(sno); 为course 表按课程号升序建唯一索引 Create unique index coucno on course(cno); 为sc表按学号升序和课程号...
  • Lucene入门之索引的建立和优化

    千次阅读 2009-08-08 12:35:00
    索引的建立和优化索引的建立 对不同的文本使用不同的分析器 普通情况下,建立索引器,并向索引器添加文档的语句如下: IndexWriter writer=new IndexWriter(indexPath,new StandardAnalyzer()); Writer.addDoc
  • 索引的建立过程学习总结

    千次阅读 2016-10-26 20:05:00
    知道索引建立的大概流程,当拿到一篇文章(单字段),需要进行分词,记录一些信息,组成倒排索引.写入到磁盘中. 单词词典 建立好term到倒排列表映射后,需要能快所找到查询term,继而获取对应倒排...
  • 一、概念和作用 在oracle索引是一种供服务器在表中快速查找一个行数据库结构。合理使用索引能够大大提高数据库运行效率。
  • mysql索引的建立和使用

    千次阅读 2017-03-02 11:43:16
    一、索引的概念  索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,...
  • SQL中索引的建立和删除及数据字典

    多人点赞 热门讨论 2020-04-11 10:27:43
    在SQL中,使用索引可以减少搜索的时间。 什么是索引呢? 在关系数据库中,索引是一种单独的、物理的对数据库表中...建立索引的目的:加快查询速度。 关系数据库管理系统中常见索引: ①顺序文件上的索引 ②B+树索引...
  • 数据库 视图、索引的建立与查看

    千次阅读 2018-10-02 17:46:17
    视图建立建立一张虚表) create view IS_Student AS select Sno,Sname,Sage  from Student where Sdept='IS'; 视图查看(视图是一张虚表 当普通表查询即可...--为SC表按照学号升序 课程号降序 建立唯一索引 cr...
  • Hbase索引的建立实现代码

    千次阅读 2016-05-20 21:56:36
    Hbase索引主要是用于提高Hbase中表数据访问速度,有效避免全表扫描。 简单讲:将经常被查询列作为行健,行健作为列键重新构造一张表,即可实现根据列值快速地定位相关数据所在行,这就是索引。 下面是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,470
精华内容 15,788
关键字:

索引的建立