精华内容
下载资源
问答
  • What does index keyword mean and what function it serves? I understand that it is meant to speed up querying, but I am not very sure how this can be done.When how to choose the column to be indexed?...

    What does index keyword mean and what function it serves? I understand that it is meant to speed up querying, but I am not very sure how this can be done.

    When how to choose the column to be indexed?

    A sample of index keyword usage is shown below in create table query:

    CREATE TABLE `blog_comment`

    (

    `id` INTEGER NOT NULL AUTO_INCREMENT,

    `blog_post_id` INTEGER,

    `author` VARCHAR(255),

    `email` VARCHAR(255),

    `body` TEXT,

    `created_at` DATETIME,

    PRIMARY KEY (`id`),

    INDEX `blog_comment_FI_1` (`blog_post_id`),

    CONSTRAINT `blog_comment_FK_1`

    FOREIGN KEY (`blog_post_id`)

    REFERENCES `blog_post` (`id`)

    )Type=MyISAM

    ;

    解决方案

    I'd recommend reading How MySQL Uses Indexes from the MySQL Reference Manual. It states that indexes are used...

    To find the rows matching a WHERE clause quickly.

    To eliminate rows from consideration.

    To retrieve rows from other tables when performing joins.

    To find the MIN() or MAX() value for a specific indexed column.

    To sort or group a table (under certain conditions).

    To optimize queries using only indexes without consulting the data rows.

    Indexes in a database work like an index in a book. You can find what you're looking for in an book quicker, because the index is listed alphabetically. Instead of an alphabetical list, MySQL uses B-trees to organize its indexes, which is quicker for its purposes (but would take a lot longer for a human).

    Using more indexes means using up more space (as well as the overhead of maintaining the index), so it's only really worth using indexes on columns that fulfil the above usage criteria.

    In your example, the id and blog_post_id columns both uses indexes (PRIMARY KEY is an index too) so that the application can find them quicker. In the case of id, it is likely that this allows users to modify or delete a comment quickly, and in the case of blog_post_id, so the application can quickly find all comments for a given post.

    You'll notice that there is no index for the email column. This means that searching for all blog posts by a particular e-mail address would probably take quite a long time. If searching for all comments by a particular e-mail address is something you'd want to add, it might make sense to add an index to that too.

    展开全文
  • 会自动为主键创建索引。数据库管理器使用主索引来有效地访问表行,且主索引允许数据库管理器强制主键的唯一性。(也可以在非主键列上定义索引,以便在处理查询时高效率地访问数据。) 关键字就是为了方便编程...

    【1】

    数据库中主键是:
    主键是在一个表上定义的唯一键中的一个,而且该键被选为最重要的键。一个表上只能有一个主键。 
    
    会自动为主键创建主索引。数据库管理器使用主索引来有效地访问表行,且主索引允许数据库管理器强制主键的唯一性。(也可以在非主键列上定义索引,以便在处理查询时高效率地访问数据。) 
    
    关键字就是为了方便编程人员在打开数据库的时候知道每个表所代表的值是什么。主要起到注释作用
    
    索引可以提高查询的速度. 
    其实主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中,主键一般都要建,主要是用来避免一张表中有相同的记录,索引一般可以不建,但如果需要对该表进行查询操作,则最好建,这样可以加快检索的速度 

    【2】

    楼上说的很多,但是不宜理解,而且有些偏差。
     我用白话说一下,
    
      首先说说关键字,关键字不是数据库才有的,所有编程语言都有,说白了就是数据库自己定义和使用的一些单词,如果使用者拿这些单词做自己的表名或是字段名,那么数据库会提示你,你用的这些都是关键字,不能用。
    
    
      再说说主键,主键就是你一张数据表中,保证你每行数据都是唯一的那个列,这个列不能为空,也不能重复出现相同的值,你可以理解成人的身份证号码,网卡的地址号码,以及公司的税务号码,他们都是唯一而且必须有的。
    
      最后说说索引,索引其实可以理解成一本字典的目录,通过目录我们很快的能找到我们要找的那一页,如果没有目录,我们就要一篇一篇的翻,很明显,使用索引的表要比没有使用索引的标的查询速度快几十倍,如果数据量达到几十万条或是几亿条,那就是几百倍几千倍了。

    转载于:https://www.cnblogs.com/lzhitian/archive/2012/06/30/2571284.html

    展开全文
  • 索引关键字的选取原则 1、表的某个字段值得离散度越高,该字段越适合选作索引的关键字。主键字段以及唯一性约束字段适合选作索引的关键字,原因就是这些字段的值非常离散。尤其是在主键字段创建索引时,cardinality...

    索引关键字的选取原则

    1、  表的某个字段值得离散度越高,该字段越适合选作索引的关键字。主键字段以及唯一性约束字段适合选作索引的关键字,原因就是这些字段的值非常离散。尤其是在主键字段创建索引时,cardinality(基数,集的势)的值就等于该表的行数。MySQL在处理主键约束以及唯一性约束时,考虑周全。数据库用户创建主键约束的同时,MySQL自动创建主索引(primary index),且索引名称为Primary;数据库用户创建唯一性索引时,MySQL自动创建唯一性索引(unique index),默认情况下,索引名为唯一性索引的字段名。

    2、  占用存储空间少的字段更适合选作索引的关键字。例如,与字符串相比,整数字段占用的存储空间较少,因此,较为适合选作索引关键字。

    3、  存储空间固定的字段更适合选作索引的关键字。与text类型的字段相比,char类型的字段较为适合选作索引关键字。

    4、  Where子句中经常使用的字段应该创建索引,分组字段或者排序字段应该创建索引,两个表的连接字段应该创建索引。

    5、  更新频繁的字段不适合创建索引,不会出现在where子句中的字段不应该创建索引。

    6、  最左前缀原则。

    7、  尽量使用前缀索引。

    引入索引的目的就是提高数据的检查效率,因此索引关键字的选择与select语句息息相关。这句话有两个含义:一是,select语句的设计可以决定索引的设计;索引的设计也同样影响着select语句的设计。例如原则1与原则2,可以影响select语句的设计;而select语句中的where子句、group by子句以及,又可以影响索引的设计。两个表的连接字段应该创建索引,外键约束一经创建,MySQL会自动地创建与外键相对应的索引,这是由于外键字段通常是两个表的连接字段。

      复合索引还有一个优点,它通过被称为“最左前缀”(leftmost prefixing)的概念体现出来的。假设向一个表的多个字段(例如fristname、lastname、address)创建复合索引(索引名为fname_lname_address).当where查询条件是以下各种字段的组合是,MySQL将使用fname_lname_address索引。其他情况将无法使用fname_lname_address索引。可以理解:一个复合索引(firstname、lastname、address)等效于(firstname,llastname,age)、(firstname,lastname)以及(firstname)三个索引。基于最做前缀原则,应尽量避免创建重复的索引,例如,创建了fname_lname_address索引后,就无需再first_name子段上单独创建一个索引。

     

    如果数据库表的存储引擎是MyISAM,那么创建主键的约束的同时,MySQL会自动创建主键索引。如果数据库表的存储引擎是InnoDB,那么创建主键约束的同时,MySQL会自动创建聚簇索引。

      MySQL还支持全文索引(fulltext),当查询数据量大的字符串信息时,使用全文索引可以大幅提升字符串的检索效率。需要注意的是,全文索引只能创建在char、varchar或者text字符串类型的字段上,且全文索引不支持前缀索引。

    展开全文
  • 文章目录 第四十六章 索引关键字 - Abstract用法详解默认 第四十六章 索引关键字 - Abstract 指定索引是抽象的。 用法 要指定索引是抽象的,请使用以下语法: Index MyIndex [ Abstract ]; 注意:创建分片表时,会...

    文章目录

    第四十六章 索引关键字 - Abstract

    指定索引是抽象的。

    用法

    要指定索引是抽象的,请使用以下语法:

    Index MyIndex [ Abstract ];
    

    注意:创建分片表时,会自动生成一个抽象分片键索引,无需定义。

    详解

    抽象索引仅用于分片表。它们不包含数据,因此没有存储(没有全局索引)。分片表只有一个抽象索引,称为分片键索引。分片键索引的目的是作为决定行所在分片的键。

    如果索引被定义为抽象的,则不能通过方法或SQL访问或使用该索引。如果将此索引标记为唯一的,或者尝试在主键中使用它,这些约束将被忽略。

    不能将IdKey索引定义为抽象索引。如果这样做,将会导致类编译错误。

    可以在现有索引上使用此关键字,使其变得抽象。这不会删除索引中的任何现有数据。

    默认

    抽象关键字的默认值为false

    展开全文
  • 索引关键字的选取原则 1、表的某个字段值得离散度越高,该字段越适合选作索引的关键字。主键字段以及唯一性约束字段适合选作索引的关键字,原因就是这些字段的值非常离散。尤其是在主键字段创...
  • 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 唯一性索引列允许空值,而主键列不允许为空值。 主键列在创建时,已经默认不为空值 + 唯一索引了。 主键可以被其他表引用为外键,而唯一索引不能。...
  • 浅谈主键索引与唯一索引

    千次阅读 2017-11-16 18:57:38
    在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。 它们的一些比较: (1)对于主健/...
  • 为什么要创建索引 mysql在默认的情况下,表中的数据记录是没有顺序的,就是说,在数据检索的时候,符合条件的数据存在表中的什么位置是不知道的,如果使用select 进行查询,数据库会从第一条数据进行检索,找到第一...
  • mysql主键索引与非主键索引区别

    千次阅读 2019-03-06 18:19:54
    主键是逻辑键,索引是物理键。主键不实际存在,而索引实际存在于数据库中。 索引会真正产生文件。数据会真正产生文件。 redo log 记录的内容:物理日志,"某个数据页上做了什么修改" ,循环使用。 bin log...
  • 1.一张表中可以有几个主键? 答:一个。 2.那联合主键是什么? 答:一张表多个主键,就是联合主键,可以由多个列形成联合主键,但是主键只能有一个 3.主键作用是什么?...创建使用关键字INDEX或KEY; (2).唯一
  • oracle 创建主键反向索引

    千次阅读 2014-11-02 17:27:25
    前言:今天在学习oracle索引,看到chu
  • 索引是一种特殊的文件(InnoDB数据表上的索引是表...普通索引(由关键字KEY或INDEX定义的索引): 唯一任务是加快对数据的访问速度。普通索引允许被索引的数据列包含重复的值。 唯一索引:如果能确定某个数据列将只包...
  • 需要按照要求给表创建主键、创建索引,创建外键(并设置删除和更新规则) 一、创建主键 ​ 自己创建一个数据库和最少两个表(student表 和 course 表),然后上图:点击创建主键 [外链图片转存失败,源站可能有防盗...
  •  普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)中的数据列创建索引。只要有可能,就应该选择...
  • mysql数据库表的主键、外键、唯一键、主键索引、唯一索引、普通索引:
  • 对于大型联机事务处理系统来说,其中的表一般都很大,在这些表的主键是由序列号产生的,而且上面是有索引的。因此相邻的索引记录就可能存在同一个数据块中,这样会形成数据块的竞争。而随着时间流逝,会不断在这些表...
  • 因为主键起始从实现角度来看是一个 唯一 非空 聚类索引, 聚类索引在一个表中只有一个,所以主键只有一个。至于为什么聚类索引在一个表中只有一个是因为聚类索引表的数据物理顺序和索引排序方式一致,而物理存储...
  • 普通索引 最基本的索引,没有任何限制 mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) -- 在索引上添加mul mysql&...
  • 索引总结 索引为什么提高了查询的速率,但是update delete insert 的速度会变慢 因为:这三种操作会破坏二叉树的,所以会造成速度变慢 什么样的索引使用什么样的方法进行查询 对于模糊查询 1 使用全文索引的...
  • 简单描述MySQL中,索引主键,唯一索引,...如果能确定某个数据列将只包含彼 此各不相同的值,在为这个数据列创建索引的时候就应该用关键字 UNIQUE 把它 定义为一个唯一索引。 也就是说,唯一索引可以保证数据记录的唯
  • 简单描述MySQL 中,索引主键,唯一索引,联合...如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE 把它定义为一个唯一索引。也就是说,唯一索引可以保证数据记录的
  • REVERSE关键字之REVERSE索引

    千次阅读 2013-09-26 21:17:59
    昨天说到REVERSE关键字可以指REVERSE函数和REVERSE索引,简单介绍了下REVERSE函数的含义,今天简单整理下REVERSE索引。 REVERSE索引也是一种B树索引,但它物理上将按照列顺序保存的每个索引键值进行了反转。例如,...
  • sql语句创建主键

    千次阅读 2016-09-26 11:39:07
    对于有数据的表,在企业管理器里面创建索引时,容易...在已有表里创建主键:alter table t_inputdata add constraint PK_t_inputdata primary key(sysid,appsysid,areaid,siteid,varietyid,sysupday,priceid, pe
  • 主键和唯一索引

    2017-02-21 17:45:13
    主键:主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。 唯一索引:一种索引,不允许具有索引值相同的行,从而禁止重复的索引或键值。系统在创建索引时检查是否有重复的...
  • sql优化篇-关键字与索引使用explain查看sql性能使用索引提高查询效率普通索引主键索引唯一索引复合索引前缀索引sql关键字对索引的影响in 不会使索引失效like 部分情况会使索引失效and 不会使索引失效 ,or 会使索引...
  • 索引是一种特殊的文件,它们包含着...如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列常创建索引时应该用就用关键字UNIQUE把他定义成一个唯一索引。也就是说,唯一索引可以保证数据记录的唯一性。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,628
精华内容 25,051
关键字:

创建主键索引的关键字是