精华内容
下载资源
问答
  • 创建索引的方法可以分为
    千次阅读
    2021-01-03 16:50:42

    数据库中创建索引是为了提升查询性能,但是建立索引也会降低修改性能。

    为什么不对表中的每一列都创建一个索引呢?

    建立索引也有不利的一面:
    1. 创建索引和维护索引要耗费时间,耗费的时间随着数据量的增加而增加;
    2. 索引占据物理空间。除了数据表占据物理空间以外,每一个索引都会占据一定的物理空间。如果建立聚簇索引,那么需要的空间就会更大;如果非聚簇索引很多,一但聚簇索引改变,那么所有非聚簇索引也会跟这变;
    3. 当对表中的数据进行增加、删除和修改的视乎,索引也要动态的维护,一旦一个数据改变,并且改变的列比较多,可能会引起好几个索引跟着改变,这样就降低了数据的维护速度;
    4. 每个索引都伴随着统计信息,用于SQL优化器执行查询时选择执行路径。索引越多统计信息越多,但过多的索引会导致优化器优化过程需要评估的组合增多。创建索引的时候,应该仔细考虑在哪些列上可以创建索引,哪些列上不能创建索引。

    一般来说,应该在下面这些列上创建索引

    • 在经常搜索的列上创建索引,能够加快搜索的速度;
    • 在作为主键的列上创建索引,需要强制该列的唯一性和组织表中数据的排列结构;
    • 在经常被用在连接的列上(主要是外键)建立索引,可以加快连接速度。
    • 在经常使用WHERE子句的列上建立索引,加快条件的判断速度。当增加索引时,会提高检索性能,加快条件的判断速度,但是会降低修改性能。
    索引可以分为聚簇索引和非聚簇索引。聚簇索引通过树形结构重排表中的数据来提高数据的访问速度,非聚簇索引则通过维护表中的数据指针来提高数据的索引。

    创建聚簇索引,应当考虑以下因素

    1. 每一个表只能有一个聚簇索引,因为表中数据的物理顺序只能有一个(按序排列表中的数据,只有一种排列方法,笔者注);
    2. 在创建任何非聚簇索引之前都应当先创建聚簇索引。表中行的物理顺序和聚簇索引中行的物理顺序是相同的,创建聚簇索引会改变表中行的物理顺序,数据行按照一定的顺序排列(B+树),并且自动维护。
    3. 关键值的唯一性要么使用UNIQUE关键字明确维护,要么由一个内部的唯一标识符明确维护。这些标识符是系统自己使用的,用户不能访问。
    4. 聚簇索引的平均大小约是数据表的百分之五,但是实际的聚簇索引的大小常常根据索引项的大小变化而变化。
    5. 在索引创建的过程中,SQL Server临时使用当前数据库的磁盘空间,当创建聚簇索引时,需要1.2倍的表空间大小。因此,需要保证有足够的磁盘空间用于创建聚簇索引。
    主键约束是一种保持数据完整性的逻辑,它限制表中的记录有相同的主键记录。在创建主键约束时,系统会自动创建一个唯一性的聚簇索引。在逻辑上,主键约束是一种重要的结构;但在物理结构上,与主键约束相对应的结构是唯一性的聚簇索引。换句话说,物理实现上其实不存在主键约束,只存在唯一性的聚簇索引。因此,当使用约束创建索引时,索引的类型和特征基本上都已经确定了,由用户定制的余地比较小。

     
    当在表上定义主键或者唯一性键约束时,如果表中已经有了使用CREATE INDEX语句创建的标准索引,那么主键约束或者唯一性键约束创建的索引将会覆盖之前创建的标准索引。这说明了主键约束或者唯一性键约束创建的索引优先级高于CREATE INDEX语句创建的索引。

    当创建唯一性索引时,应认真考虑如下规则

    • 当在表中创建主键约束或者唯一性键约束时,SQL Server会自动创建一个唯一性索引;
    • 如果表中已经包含有数据,那么创建索引时,SQL Server会检查表中已有数据的冗余性;
    • 每当使用插入语句或者修改语句时,SQL Server都会检查数据的冗余性;如果有冗余值,那么SQL Server将会取消该语句的执行,并且返回一个错误信息;
      (确保表中的每一行都有一个唯一值,这样逻辑上可以确保每一个实体都可以唯一确认)
    • 只能在可以保证实体完整性的列上创建唯一性索引
    索引可以包含一个、两个、甚至更多个列。两个列或者以上列上建立的索引被称作复合索引。

    当创建复合索引时,应该考虑以下规则

    • 最多可以把16个列合并成一个单独的复合索引,构成复合索引列的总长度不能超过900字节,也就是说复合索引的长度不能太长;
    • 在复合索引中,所有的列都必须来自同一个表中,不能跨表建立复合索引;
    • 在复合索引中,列的排列顺序是非常重要的(影响查询性能),因此仔细斟酌列的排列顺序。原则上,应该首先定义最唯一的列。
    • 为了使查询优化器使用复合索引,查询语句中的WHERE子句必须参考复合索引中的第一个列。
    • 当表中有多个关键列时,复合索引是有用的,这种情况下的复合索引能提高查询性能,同时减少需要在一个表中创建的索引数量。
    更多相关内容
  • Mysql 创建索引

    千次阅读 2022-02-23 10:52:47
    数据库建立索引常用的规则如下: 1、表的主键、外键必须有索引;2、数据量超过300的表应该有索引; 3、经常与其他表进行连接的表,在连接字段上应该建立索引; 4、经常出现在Where子句中的字段,特别是大表的字段,...

    数据库建立索引常用的规则如下:

    1、表的主键、外键必须有索引; 
    2、数据量超过300的表应该有索引; 
    3、经常与其他表进行连接的表,在连接字段上应该建立索引; 
    4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引; 
    5、索引应该建在选择性高的字段上; 
    6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引; 
    7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:

    A、正确选择复合索引中的主列字段,一般是选择性较好的字段;

    B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;

    C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;

    E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

    8、频繁进行数据操作的表,不要建立太多的索引; 
    9、删除无用的索引,避免对执行计划造成负面影响;

    以上是一些普遍的建立索引时的判断依据。 
    索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。 
    因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。 另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。 
    总的来说,小型表肯定不建索引, 
    或者数据库记录在亿条数据级以上,还是建议使用非关系型数据库。 
    还有些特殊字段的数据库,比如BLOB,CLOB字段肯定也不适合建索引。 
    其实这个问题更感觉偏向于做软件项目的一种经验。


    对千万级MySQL数据库建立索引的事项及提高性能的手段

    一、注意事项:

    首先,应当考虑表空间和磁盘空间是否足够。我们知道索引也是一种数据,在建立索引的时候势必也会占用大量表空间。因此在对一大表建立索引的时候首先应当考虑的是空间容量问题。 
    其次,在对建立索引的时候要对表进行加锁,因此应当注意操作在业务空闲的时候进行。

    二、性能调整方面:

    首当其冲的考虑因素便是磁盘I/O。物理上,应当尽量把索引与数据分散到不同的磁盘上(不考虑阵列的情况)。逻辑上,数据表空间与索引表空间分开。这是在建索引时应当遵守的基本准则。

    其次,我们知道,在建立索引的时候要对表进行全表的扫描工作,因此,应当考虑调大初始化参数db_file_multiblock_read_count的值。一般设置为32或更大。

    再次,建立索引除了要进行全表扫描外同时还要对数据进行大量的排序操作,因此,应当调整排序区的大小。

    9i之前,可以在session级别上加大sort_area_size的大小,比如设置为100m或者更大。

    9i以后,如果初始化参数workarea_size_policy的值为TRUE,则排序区从pga_aggregate_target里自动分配获得。

    最后,建立索引的时候,可以加上nologging选项。以减少在建立索引过程中产生的大量redo,从而提高执行的速度。

    MySql在建立索引优化时需要注意的问题

    设计好MySql的索引可以让你的数据库飞起来,大大的提高数据库效率。设计MySql索引的时候有以下几点注意:

    1,创建索引

    对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会引起致命的性能下降。但是也不是什么情况都非得建索引不可,比如性别可能就只有两个值,建索引不仅没什么优势,还会影响到更新速度,这被称为过度索引。

    2,复合索引

    比如有一条语句是这样的:select * from users where area=’beijing’ and age=22; 
    如果我们是在area和age上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效 率,但是如果在area、age两列上创建复合索引的话将带来更高的效率。如果我们创建了(area, age, salary)的复合索引,那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀 
    特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。

    3,索引不会包含有NULL值的列

    只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。

    4,使用短索引

    对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

    5,排序的索引问题

    mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。

    6,like语句操作

    一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%a%” 不会使用索引而like “aaa%”可以使用索引。

    7,不要在列上进行运算

    select * from users where YEAR(adddate)

    8,不使用NOT IN和操作

    NOT IN操作不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替


    添加索引示例:

    CREATE INDEX IDX_AUDITSTATUS ON [shanghaiDB].[dbo].[Activity](AUDITSTATUS) WITH(ONLINE=ON)
     
    CREATE INDEX IDX_ANUMMID ON [nantongDB].[dbo].[Orders](ANUM,MID) WITH(ONLINE=ON)
     
    CREATE INDEX IDX_SiteCode ON Usercenter.[dbo].MO(SiteCode) WITH(ONLINE=ON)
     
    CREATE INDEX IDX_AccessDt ON [all].[dbo].[AccessLog](AccessDt) WITH(ONLINE=ON)

    Create index注意n如果是大表建立索引,切记加上ONLINE参数

    这几天在做数据库的优化,有个2亿记录的表,发现需要添加一个联合索引,结果就采用普通的create index index_name on tablename (entp_id,sell_date),结果悲剧了,把所有的DML语句都阻塞了,导致系统不能正常使用,还好是晚上10点,用户不是非常多,1个小时候,索引结束,阻塞解决;

    上网查了一下,如果加上 online参数后,就可以在线做索引,而不需要阻塞所有的DML语句,血的教训,拿出来与各位共勉,具体online与不加online区别如下:

    1. DML操作对create index 的影响。 如果在create的时候,有其他的进程在对这个index 所对应的数据进行DML操作,create会受影响:

      

    SQL> create table test (id number, name varchar2(20));
     
    Table created.

    然后重新开一个session:

      

    SQL> insert into test values (1,'lms');
     
    1 row created.
     
    <no commit>
     
    SQL> create index t1 on test(id);
    create index t1 on test(id)
    *
    ERROR at line 1:
    ORA-00054: resource busy and acquire with NOWAIT specified

     2. 加online这个参数,这个参数加上以后,除了create过程中index 保持online状态,Oracle还会在create index之前等待所有DML操作结束,然后得到DDL锁,开始create.  

    SQL> create index t1 on test(id) online;
    <hold before commit>
    <after commit>
     
    SQL> commit;
     
    Commit complete.
     
    Index altered.

    如果不commit,上面的操作就会一直hold。

    所以以后create索引和rebuild索引的时候最好加上online。

      转自:https://blog.csdn.net/Su_Xingyu/article/details/79900290 

    mysql 索引类型以及创建

    关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能会产生几十万甚至几百万的数据,没有索引查询会变的非常缓慢。还是以WordPress来说,其多个数据表都会对经常被查询的字段添加索引,比如wp_comments表中针对5个字段设计了BTREE索引。

    MySQL索引的概念

    索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。上述SQL语句,在没有索引的情况下,数据库会遍历全部200条数据后选择符合条件的;而有了相应的索引之后,数据库会直接在索引中查找符合条件的选项。如果我们把SQL语句换成“SELECT * FROM article WHERE id=2000000”,那么你是希望数据库按照顺序读取完200万行数据以后给你结果还是直接在索引中定位呢?(注:一般数据库默认都会为主键生成索引)。 

    索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。 MySQL索引的类型

    1. 普通索引

    ALTER TABLE article ADD INDEX index_article_title ON title(200);  

    这是最基本的索引,它没有任何限制,比如为title字段创建的索引就是一个普通索引,MyIASM中默认的BTREE类型的索引,也是我们大多数情况下用到的索引。 

    直接创建索引

    CREATE INDEX index_name ON table(column(length))

    修改表结构的方式添加索引

    ALTER TABLE table_name ADD INDEX index_name ON (column(length))

    创建表的时候同时创建索引

    CREATE TABLE `table` (
      `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
    `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
    `time` int(10) NULL DEFAULT NULL ,
    PRIMARY KEY (`id`),
    INDEX index_name (title(length))
    )

    删除索引

    DROP INDEX index_name ON table  

    2. 唯一索引

    与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值(注意和主键不同)。如果是组合索引,则列值的组合必须唯一,创建方法和普通索引类似。

    #创建唯一索引

    CREATE UNIQUE INDEX indexName ON TABLE(COLUMN(LENGTH))

    #修改表结构

    ALTER TABLE table_name ADD UNIQUE indexName ON (COLUMN(LENGTH))

    #创建表的时候直接指定

    CREATE TABLE `table` (
      `id` INT(11) NOT NULL AUTO_INCREMENT ,
    `title` CHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
    `content` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
    `time` INT(10) NULL DEFAULT NULL ,
    PRIMARY KEY (`id`),
    UNIQUE indexName (title(LENGTH))
    ) 

    3. 全文索引(FULLTEXT)

    MySQL从3.23.23版开始支持全文索引和全文检索,FULLTEXT索引仅可用于 MyISAM 表;他们可以从CHAR、VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE 或CREATE INDEX被添加。对于较大的数据集,将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引,其速度比把资料输入现有FULLTEXT索引的速度更为快。不过切记对于大容量的数据表,生成全文索引是一个非常消耗时间非常消耗硬盘空间的做法。

    创建表的适合添加全文索引

    CREATE TABLE `table` (
      `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
    `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
    `time` int(10) NULL DEFAULT NULL ,
    PRIMARY KEY (`id`),
    FULLTEXT INDEX index_name (column)
    )

    修改表结构添加全文索引

    ALTER TABLE article ADD FULLTEXT INDEX index_name (column)

    直接创建索引

    CREATE FULLTEXT INDEX index_name ON article(column)

    4. 单列索引、多列索引

    多个单列索引与单个多列索引的查询效果不同,因为执行查询时,MySQL只能使用一个索引,会从多个索引中选择一个限制最为严格的索引。

    5. 组合索引(最左前缀)

    平时用的SQL查询语句一般都有比较多的限制条件,所以为了进一步榨取MySQL的效率,就要考虑建立组合索引。例如上表中针对title和time建立一个组合索引:ALTER TABLE article ADD INDEX index_titme_time (title(50),time(10))。建立这样的组合索引,其实是相当于分别建立了下面两组组合索引:(title,time),title,为什么没有time这样的组合索引呢?这是因为MySQL组合索引“最左前缀”的结果。简单的理解就是只从最左面的开始组合。并不是只要包含这两列的查询都会用到该组合索引,如下面的几个SQL所示:

    使用到上面的索引

    SELECT * FROM article WHREE title='测试' AND time=1234567890;
    SELECT * FROM article WHREE utitle='测试';

    不使用上面的索引

    SELECT * FROM article WHREE time=1234567890; 

    MySQL索引的优化

    上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。下面是一些总结以及收藏的MySQL索引的注意事项和优化方法。

     何时使用聚集索引或非聚集索引?

    动作描述使用聚集索引使用非聚集索引
    列经常被分组排序使用使用
    返回某范围内的数据使用不使用
    一个或极少不同值不使用不使用
    小数目的不同值使用不使用
    大数目的不同值不使用使用
    频繁更新的列不使用使用
    外键列使用使用
    主键列使用使用
    频繁修改索引列不使用使用


    事实上,我们可以通过前面聚集索引和非聚集索引的定义的例子来理解上表。如:返回某范围内的数据一项。比如您的某个表有一个时间列,恰好您把聚合索引建立在了该列,这时您查询2004年1月1日至2004年10月1日之间的全部数据时,这个速度就将是很快的,因为您的这本字典正文是按日期进行排序的,聚类索引只需要找到要检索的所有数据中的开头和结尾数据即可;而不像非聚集索引,必须先查到目录中查到每一项数据对应的页码,然后再根据页码查到具体内容。

    展开全文
  • Elasticsearch创建索引流程

    千次阅读 2021-01-16 01:21:18
    前言说明:本文章使用的ES版本是:6.7.0由此可知,在ES启动过程中,创建Node对象(new Node(environment))时,初始化了RestHandler,由其名字可以知道这是用来处理Rest请求的。在ES源码中,RestHandlerAction如下图:...

    前言

    说明:本文章使用的ES版本是:6.7.0

    由此可知,在ES启动过程中,创建Node对象(new Node(environment))时,初始化了RestHandler,由其名字可以知道这是用来处理Rest请求的。

    在ES源码中,RestHandlerAction如下图:

    9a4469dc29b3814f5dde4a5ac3f31793.png

    其中:

    admin

    cluster:处理集群相关请求

    indices:处理索引相关请求

    cat:日常查询

    document:文档处理

    ingest:pipeline处理。pipeline?干嘛的

    search:搜索

    接下来我们具体的看一下ES是如何创建索引的:org.elasticsearch.rest.action.document.RestIndexAction

    数据概念和结构

    一个完整的ES集群由以下几个基本元素组成

    名称

    概念

    对应关系型数据库概念

    说明

    Cluster

    集群

    一个或多个节点的集合,通过启动时指定名字作为唯一标识,默认cluster-state

    node

    节点

    启动的ES的单个实例,保存数据并具有索引和搜索的能力,通过名字唯一标识

    展开全文
  • ORACLE 创建视图索引序列

    千次阅读 2021-05-07 11:25:54
    并没有真实的数据虚表作用限制对数据的操作复杂查询变简单提供相同数据的不同显示UNION ALL直接添加到一起UNION添加到一起并去重*/--赋予scott用户创建视图的权限sqlplus / as sysdba;GRANT CREATE VIEW TO SCOTT;--...

    /*

    视图View

    视图是从若干基本表和(或)其他视图构造出来的表

    视图存放的都是查询语句,并没有真实的数据

    虚表

    作用

    限制对数据的操作

    复杂查询变简单

    提供相同数据的不同显示

    UNION ALL

    直接添加到一起

    UNION

    添加到一起并去重

    */

    --赋予scott用户创建视图的权限

    sqlplus / as sysdba;

    GRANT CREATE VIEW TO SCOTT;

    --创建视图

    CREATE OR REPLACE VIEW V_EMP

    AS

    SELECT * FROM EMP WHERE ENAME LIKE '%A%'

    UNION ALL

    SELECT * FROM EMP WHERE ENAME LIKE '%S%'

    UNION ALL

    SELECT * FROM EMP WHERE SAL >= 3000;

    CREATE OR REPLACE VIEW V_EMP

    AS

    SELECT * FROM EMP WHERE ENAME LIKE '%A%'

    UNION

    SELECT * FROM EMP WHERE ENAME LIKE '%S%'

    UNION

    SELECT * FROM EMP WHERE SAL >= 3000;

    --删除视图

    DROP VIEW V_EMP;

    /*

    序列

    一个连续递增的数列

    */

    --创建序列

    CREATE SEQUENCE SEQ_BJSXT

    START WITH 20001

    INCREMENT BY 2

    MAXVALUE 99999999

    MINVALUE 1

    CYCLE

    CACHE 50

    --删除数列

    DROP SEQUENCE SEQ_BJSXT;

    --查询数列

    SELECT SEQ_BJSXT.NEXTVAL FROM DUAL;

    /*

    索引

    饕餮 就类似于字典的索引

    大大提高了数据库的查询性能

    索引会占单独的存储空间,如果建立不合适有可能导致索引数据远大于真实数据

    索引会降低数据库的增删改性能

    */

    SELECT E.*,ROWID FROM EMP E;

    --创建索引

    CREATE INDEX IDX_EMP_ENAME ON EMP(ENAME);

    oracle创建视图&lpar;view&rpar;

    视图:是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同义词. 视图是存储在数 ...

    oracle 表 视图 存储过程 序列 job

    table 表 --delete table drop table Test1; -- Create table create table TEST1 (   ID     NUMBER,   T_N ...

    SQLServer和Oracle创建视图用户

    在数据集成的开发中,经常会需要给对方创建视图,让其可以查看一些必要的数据.既在数据库中创建用户,并赋给该用户查询视图的权限 一.SQLServer --创建登录用户账户USE [master] GO ...

    Oracle创建视图view权限不足问题剖析

    问题: 使用USER1等其他用户登录Oracle以后,创建视图,提示"权限不够",怎么解决? 这是因为USER1这个帐户目前没有创建视图的权限. 解决方法为: 首先使用system ...

    Oracle创建视图 及 授权

    创建视图语句: CREATE VIEW GRM_PROFIT_VIEW AS SELECT ID, DEPT_CODE, DEPT_NAME, YMONTH, PROJECT_NAME, PROJEC ...

    Oracle创建视图权限不足

    Oracle 在创建用户的时候如果直接给用户DBA权限,那么在B用户中可以直接查询A用户的表,但是在创建视图时就会报无权限,在这种情况下需要再在被访问的A用户里面去给予要访问该表的B用户授权. --创 ...

    Oracle&lpar;创建视图&rpar;

    概念: 视图:所谓视图就是提取一张或者多张表的数据生成一个映射,管理视图可以同样达到操作原表的效果,方便数据的管理以及安全操作. 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关 ...

    oracle创建视图时一些问题

    这几天创建视图的时候,遇见的问题. 一:创建视图的时候Oracle-报错:文字与格式字符串不匹配(ORA-01861) 我创建的时候用的 是to_date 然后我改成了to_char select X ...

    Oracle创建视图的一个问题

    问题: 在用户user1中创建视图,查询内容包含user2下的表数据, 创建视图的时候提示“权限不足”.执行如下语句: --为USER1授权 GRANT CREATE ANY TABLE TO USE ...

    随机推荐

    &lbrack;LeetCode&rsqb; Inorder Successor in BST 二叉搜索树中的中序后继节点

    Given a binary search tree and a node in it, find the in-order successor of that node in the BST. No ...

    Python3 ORM hacking

    #!/usr/bin/env python3 # -*- coding: utf- -*- # # Python3 ORM hacking # 说明: # 之前分析了一个Python2 ORM的源代码 ...

    Vs 2013 单步调试 &period;net framework 中遇到的问题

    为了可以看清.net framework 的的内部机制,进行单步实际是不错的选择啊,   其它的更多设置可以看其它文章,我这里主要讲问题.     然后就会加载PDB,然后就可以单步进入了. 但是 , ...

    第二章 D - Number Sequence&lpar;1&period;5&period;10&rpar;

    转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1301527312 大致题意: 有一串数字串,其规律为 1 12 123 1234 1234 ...

    C&num;如何检测一个字符串是不是合法的URL

    C#如何检测一个字符串是不是合法的URL using System.Text.RegularExpressions;    ///          /// 检测串值是否 ...

    Linux下的硬链接与软链接

    本文总结自: https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html#fig2 一个文件可以用下图表 ...

    确认过眼神,你是喜欢Stream的人

    摘要:在学习Node的过程中,Stream流是常用的东东,在了解怎么使用它的同时,我们应该要深入了解它的具体实现.今天的主要带大家来写一写可读流的具体实现,就过来,就过来,上码啦! 码前准备 在写代码 ...

    Android让文本输入框默认不获取焦点

    项目中有个检索功能,页面上有个EditText输入框,打开页面后,焦点默认在EditText上,这样的话软键盘默认就会显示出来,占据大半个屏幕. 后来想办法将这个给去掉了,原先考虑着将焦点赋给页面上的 ...

    Lua脚本语言入门学习其应用教程

    Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用.不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更 ...

    Codeforces Round &num;350 &lpar;Div&period; 2&rpar; E&period; Correct Bracket Sequence Editor 栈 链表

    E. Correct Bracket Sequence Editor 题目连接: http://www.codeforces.com/contest/670/problem/E Description ...

    展开全文
  • 通常的创建索引的算法分为两种。 第一种是基于哈希表的算法,另一种是基于后缀树或后缀数组的算法,其中BWT(Burrows-Wheeler变换)索引是重要的索引结构。 当前,BWT索引需要几个小时的串行计算才能构建大的基因组...
  • 作者简介:半旧518,长跑型选手,专注于java后端 专栏简介:mysql进阶,主要讲解mysql数据库进阶... 文章简介:本文将介绍索引的分类、创建、删除,Mysql8.0中索引的新特性,索引的设计原则 三连、互关必回哟 ...
  • MySQL索引创建及使用

    万次阅读 多人点赞 2019-03-12 17:56:59
    背景 最近在深化学习数据库相关知识,借此机会总结记录一番,本来想自己总结概括一下,但是看到一...关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL...
  • 二、创建索引 三、管理索引(删除索引) 四、全文索引和目录 五、聚集索引和非聚集索引 一、索引概述 索引:是一个单独的、物理的数据库结构,它是某个表中一列或若干类的集合相应的指向表中物理标识这些值的...
  • ElasticSearch也用了一段时间,索引建立好后,基本就很少去用表达式操作它了,目前一直都是直接用Java代码去进行ES的增删改查,今天突然需要用到索引
  • mysql 创建索引

    千次阅读 2018-08-22 15:35:11
    可以帮助选择更好的索引和写出更优化的查询语句。简单讲,它的作用就是分析查询性能。  explain关键字的使用方法很简单,就是把它放在select查询语句的前面。  mysql查看是否使用索引,简单的看type类型就可以。...
  • pymongo python代码创建mongodb索引

    千次阅读 2019-09-27 14:36:03
    mongo使用场景 最近做敏感词,把检测到敏感词的语句中敏感词替换为*存入mongo中,语句类型用type区分,分为评价...在python代码中可以非常方便的对mongodb添加索引,本文提供两种方法。 第一种是我自己用的联合索引...
  • SAS创建和使用索引(SAS INDEX)

    千次阅读 2019-07-05 20:54:56
    一、概述 在合并数据集的时候,可以使用DATA步,但使用DATA 步时需要对KEY VALUE 排序,且KEY VALUE 的名字也必须一致; 也可以用PROC SQL ,不需要进行上述排序、重命名的步骤。...INDEX 分为简单索引和复杂...
  • Oracle 建立索引及SQL优化

    千次阅读 2021-05-01 10:14:40
    复合索引创建方法创建单一索引方法完全一样。但复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引。如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引...
  • 1.索引是一种可以帮助 Mysql 高效获取数据的数据结构,目的是为了减少磁盘I/O次数,加快查询速度 2.索引是在存储引擎中实现的,每种存储引擎实现索引的方式可能不通,其中Mysql的InnoDB引擎的索引底层采用B+树算法...
  • 索引的操作

    千次阅读 2021-11-17 22:42:17
    索引的操作包含创建索引、修改索引和删除索引,这些操作是MySQL软件中最基本、最重要的操作。 为什么使用索引? 数据库对象索引其实与书的目录非常类似,主要是为了提高从表中检索数据的速度。由于数据存储在...
  • 文章目录数据库的分类基于磁盘的数据库的缺点改进方法缓存池的大小决定因素应用索引进行查询具体示例1、索引的应用2、利用索引进行排序优化索引1、为索引列选择合适的数据类型2、一般原则虽然建了索引,但是不会走...
  • 《MySQL高级篇》六、索引创建与设计原则

    千次阅读 多人点赞 2022-08-09 14:52:24
    《MySQL高级篇》六、索引创建与设计原则
  • MySQL单列索引和联合索引

    千次阅读 多人点赞 2022-09-02 11:11:33
    多个单列索引在多条件查询时优化器会优先选择最优索引策略,可能只用一个索引,也可能将多...但多个单列索引底层会创建多个B+索引树,比较占用空间,也会浪费一定搜索效率,故如果只有多条件联合查询时最好建联合索引
  • Day515.索引创建与设计原则 -mysql

    千次阅读 2022-01-21 20:52:01
    索引创建与设计原则 一、索引的声明与使用 1、索引的分类 MySQL的索引包括普通索引...按照 物理实现方式 ,索引可以分为 2 种:聚簇索引和非聚簇索引。 按照 作用字段个数 进行划分,分成单列索引和联合索引。 ...
  • oracle 创建索引和视图

    千次阅读 2018-07-15 14:37:27
    一: 创建索引有两种方式:   1. 自动添加(oracle 会为主键和唯一约束自动添加索引)  自动创建的索引是无法手动删除的,但是当删除主键约束,唯一约束时,对应的索引也会自动删除;   2. 手动添加  在...
  • Oracle数据库索引创建

    千次阅读 2018-09-12 19:00:18
    如果表数据和索引数据不需要分开  建表时直接指定主键索引  CREATE TABLE VOAMASTM (   "REFCODE" NUMBER(10) DEFAULT 0 NOT NULL ,   "OWNERREFCODE" NUMBER(10) DEFAULT 0 ,   "...
  • 索引的分类与使用

    千次阅读 2022-03-19 20:53:03
    按照 物理实现方式,索引可以分为 2 种:聚簇索引和非聚簇索引。 按照 作用字段个数进行划分,分成单列索引和联合索引。 普通索引创建普通索引时,不附加任何限制条件,只是用于提高查询效率。这类索引可以...
  • SQL Server 数据库之索引

    千次阅读 2022-03-20 18:00:13
    MySQL 数据库的索引1.... 创建与删除索引4.1 用 SQL 命令创建索引4.2 用 SSMS 创建索引4.3 用 SQL 命令删除索引4.4 用 SSMS 删除索引5. 修改和查看索引5.1 用 SQL 命令修改索引 1. 索引介绍 视图 的存在简化了
  • 1、当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex。 2、当数据的mapping需要修改,但是大量的数据已经导入到索引中了,重新导入...
  • mysql索引详解

    万次阅读 多人点赞 2021-07-07 21:40:09
    分别为:表定义文件、数据文件、索引文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。 InnoDB:所有的表都...
  • 这两天有个非常强烈的感觉就是自己在一些特别的情况下还是hold不住,脑子easy放空或者说一下子不知道怎么去分析问题了,比方,问“hash和btree索引的差别”,这非常难吗。仅仅要掌握了这两种数据结构稍加分析就能...
  • 数据库索引的坏处

    千次阅读 2021-03-16 20:10:50
    假 设在Table ta 中的Column ca 创建索引 idx_ta_ca,那么任何更新 Column ca 的操作,MySQL在更新表中 Column ca的同时,都须要更新Column ca 的索引数据,调整因为更新带来键值变化的索引信息。而如果没有对 ...
  • 常见的空间索引方法

    万次阅读 多人点赞 2018-05-21 15:51:17
    在谈论空间索引之前,我们必须了解索引的概念。索引是为了提高数据集的检索效率。打个比喻,一本书的目录就是这本书的内容的“索引”,我们查看感兴趣的内容前,通过查看书的目录去快速查找对应的内容,而不是...
  • MySQL索引的数据结构

    千次阅读 2022-01-22 17:42:09
    索引及其优缺点2.1 索引概述2.2 优点2.3 缺点3. InnoDB中索引的推演3.1 索引之前的查找1. 在一个页中的查找2. 在很多页中查找3.2 设计索引1. 一个简单的索引设计方案2. InnoDB中的索引方案3.3 常见索引概念1. 聚簇...
  • Mysql在线添加索引

    千次阅读 2021-01-13 23:15:28
    在实际工作中,经常遇到需要给数据库表添加索引的情况。虽然操作是由dba来执行,但开发还是应该了解在线添加索引会引起的性能问题。比如博主最近就遇到了线上添加索引导致业务报警的问题。 问题描述 出于业务需要,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 204,285
精华内容 81,714
热门标签
关键字:

创建索引的方法可以分为