精华内容
下载资源
问答
  • 索引创建的原则

    2019-04-22 16:20:00
    index ---- 普通索引,数据可以重复fulltext ---- 全文索引,用来对大表文本域(char,varchar,text)进行索引unique ---- 唯一索引,要求所有记录都唯一primary key ---- 主键索引,也就是在唯一索引的基础上相应列...

    1、索引分四类:

    index ---- 普通索引,数据可以重复
    fulltext ---- 全文索引,用来对大表的文本域(char,varchar,text)进行索引
    unique ---- 唯一索引,要求所有记录都唯一
    primary key ---- 主键索引,也就是在唯一索引的基础上相应的列必须为主键

    2、使用索引需注意:

    (1). 只对 where 和order by 需要查询的字段设置索引,避免无意义的硬盘开销;
    (2). 组合索引支持前缀索引;
    (3). 更新表的时候,如增删记录,MySQL会自动更新索引,保持树的平衡;因此更多的索引意味着更多的维护成本

    3、索引建立原则

    (1). 尽量减少like,但不是绝对不可用,”xxxx%” 是可以用到索引的
    (2). 表的主键、外键必须有索引
    (3). 谁的区分度更高(同值的最少),谁建索引,区分度的公式是count(distinct(字段))/count(*)
    (4). 单表数据太少,不适合建索引
    (5). where,order by ,group by 等过滤时,后面的字段最好加上索引
    (6). 如果既有单字段索引,又有这几个字段上的联合索引,一般可以删除联合索引;
    (7). 联合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
    (8). 联合索引: mysql 从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index(a,b,c). 可以支持 a|a,b|a,b,c 3种组合进行查找,但不支持 b,c 进行查找.当最左侧字段是常量引用时,索引就十分有效。
    (9). 前缀索引: 有时候需要索引很长的字符列,这会让索引变得大且慢。通常可以索引开始的部分字符,这样可以大大节约索引空间,从而提高索引效率。其缺点是不能用于ORDER BY和GROUP BY操作,也不能用于覆盖索引 Covering index(即当索引本身包含查询所需全部数据时,不再访问数据文件本身)。
    (10). NULL会导致索引形同虚设

    4、禁用索引

    - like “ %xxx ”
    - not in , !=
    - 对列进行函数运算的情况(如 where md5(password) = “xxxx”)
    - WHERE index=1 OR A=10
    - 存了数值的字符串类型字段(如手机号),查询时记得不要丢掉值的引号,否则无法用到该字段相关索引,反之则没关系

     

    转载于:https://www.cnblogs.com/yangqiong1989/p/10750869.html

    展开全文
  • 正文是什么索引用于快速查询某些特殊列某些行。如果没有索引, MySQL 必须从第一行开始,然后通过搜索整个表来查询有关行。表越大,查询成本越大。如果表有了索引的话,那么 MySQL 可以很快确定数据位置...

    正文

    是什么

    索引用于快速的查询某些特殊列的某些行。如果没有索引, MySQL 必须从第一行开始,然后通过搜索整个表来查询有关的行。表越大,查询的成本越大。如果表有了索引的话,那么 MySQL 可以很快的确定数据的位置,而不用查询整个表格。这比顺序的读取每一行要快的多。索引就像我们查字典时的目录一样,我们通过查询字典的目录,可以定位到某一行数据。

    大多数的 MySQL 的索引(主键索引,唯一索引,普通索引,全文索引)都是 B-trees  结构。例外的情况有:在空间数据类型使用 R-trees 结构。存储引擎为 MEMORY 的数据库,也可以支持哈希索引。InnoDB 存储引擎的全文索引使用反向列表结构。

    使用场景

    MySQL 会使用到索引的场景如下:

    1.根据一个条件快速的匹配到对应的行。

    2.缩小查询影响行数。如果一个查询字段有多个索引,MySQL 通常选择使用影响行数最小的索引(选择性最高的索引)。索引的选择性的计算 select count(distinct name) / count(*) from table;

    3.对于组合索引,索引左边的列可以用索引前缀优化器来查询数据。例如,你有个三列的组合索引(col1,col2,col3) ,那么你可以使用索引查询(col1),(col1,col2),(col1,col2,col3)这三种组合的数据。有关于组合索引,详细请看另外一篇博客 MySQL 组合索引

    4.当和其他表进行连表查询的时候,如果进行判断的列的数据类型和大小相同,那么再这两个列上使用索引,可以让判断更加效率。例如:在如下查询中,给tb1.name和tb2.name添加索引会提升查询效率。 SELECT * FROM tb1, tb2 WHERE tb1. name = tb2. name

    在这里,VARCHAR 与 CHAR 被认为是相同的类型。需要注意的是,如果要让索引生效,不仅需要类型一致,大小也必须一致。例如,VARCHAR(10) 和 CHAR(10) 大小相同可以使用索引,但 VARCHAR(10) 与 CHAR(15)就无法使用索引。

    5.查找索引列的 MIN() 或 MAX()值。

    6.通过索引列进行排序或分组,或者组合索引的左前缀进行排序或分组。

    7.查询索引列的内容。(如果只需要返回索引列的值,那么不需要查询数据行,直接从内存中读取检索值。这种情况称为覆盖索引)例如: SELECT key_part FROM table WHERE key_part=1

    对于小型表或报表查询处理大多数或所有行的大型表的查询,索引不太重要。当查询需要访问大多数行时,顺序读取比通过索引更快。顺序读取可以最大限度地减少磁盘搜索,即使查询不需要所有行也是如此。只有数据较大,并且需要访问其中一部分数据的时候,索引才会显得比较重要。

    怎么用

    查看索引

    SHOW INDEX FROM table

    运行后,显示结果如下:

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    其中,各个字段的含义:

    table: 表的名称

    Non_unique: 索引是否可以重复。不可以重复则为0;可以重复则为1。

    Key_name: 索引名称。创建的时候,可以选择输入,不输入 MySQL 自动生成。如果索引是主键,则名称始终为 PRIMARY。

    Seq_in_index: 索引中的列序列号,从1开始。

    Column_name: 索引涉及到的列的名称。

    Collation:列如何在索引中排序。这可以具有值 A(ascending 升序),D ( descending 降序)或NULL(未排序)。

    Cardinality: 索引中唯一值的数量(不是实时更新的准确数据)。

    Sub_part: 索引前缀长度。如果使用字段的部分字符作为索引,那么显示索引字符数量。如果使用整个字段都被索引,那么为 NULL。

    Packed: key的打包方式,NULL 表示不打包。

    Null: 索引列包含 NULL 或者 ‘’ 的时候,会是 YES。

    Index_type: 索引类型。(BTREE, FULLTEXT,HASH, RTREE)之一。

    Comment: 未在当前列中描述的索引信息,例如 disabled 索引是否已禁用。

    Index_comment: 在创建索引时提供的注释。

    Visible: 索引是否对优化程序可见(有的版本会出现该信息)。

    添加索引

    CREATE INDEX index_name ON table_name (key_part,...)

    ALTER TABLE t1 ADD INDEX index_name (key_part)

    通常,在创建表时创建索引。对于InnoDB存储引擎的表。其中主键确定数据的物理布局,可以向现有表中添加索引。key_part 表示组成索引的列的列名,如果是多个列名,那么将产生一个组合索引。在 key_part 参数后可以添加 ASC 或者 DESC 去指定索引按照正序排列还是倒序排列。

    关于创建索引需要注意的是:

    组合索引

    组合索引是一个由多个列组成的索引。举例说明:例如在表 address 中有三个字段,分别为 Provincial 省 city 市 county 县 在建表的时候,用这三个字段组成一个组合索引。代码如下:

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    AAffA0nNPuCLAAAAAElFTkSuQmCC1 CREATE TABLE address (2     provincial VARCHAR (10),3     city VARCHAR (10),4     county VARCHAR (10),5     INDEX (provincial, city, county)6 )

    CREATE TABLE address

    这里的索引是这样创建的:首先按照省排序,然后,再根据同一个省的内容,按照市进行排序,最后,按照县去排序。即,首先按照第一列进行索引排序,如果第一列内容一致,那么按照第二列进行排序,以此类推。

    前缀索引

    如果将字符串的列作为索引,可以创建前缀索引。一般情况下某个前缀的选择性也是足够高的,足以满足查询性能。对于BLOB,TEXT,或者很长的VARCHAR类型的列,必须使用前缀索引。前缀索引以字节为单位。前缀索引支持的长度取决于存储引擎。例如,对于InnoDB 使用 REDUNDANT 或 COMPACT 行格式的表, 前缀最长可达767字节。对于InnoDB使用DYNAMIC 或 COMPRESSED 行格式的表, 前缀长度限制为3072字节 。对于MyISAM表,前缀长度限制为1000个字节。

    如果指定的索引前缀超过最大列数据类型大小,对于非唯一索引,如果启用了严格的SQL模式,创建会发生错误。如果未启用严格SQL模式,索引长度减少到最大列数据类型大小,并产生警告。

    创建前缀索引的长度,取决于索引的选择性。详见另外一篇博客:索引选择性

    创建前缀索引语法如下(这里的10 表示截取前10个字符):

    CREATE INDEX key_part_name ON table_name (key_part(10));

    ALTER TABLE table_name ADD INDEX index_name (key_part(10))

    方法索引

    这里的索引类型英文名称为:Functional Key Parts 这里作者并不清楚官方的翻译名称为啥,只是根据索引的方式进行翻译。如果不对,欢迎大神指正。

    这个索引类似于两个前缀索引的拼接。直接举个例子就明白了:在 t1 表中有两个列,col1 和 col2 我要创建一个包含完整的 col1 列和 col2 列的前10个字节组成一个组合索引。代码如下:

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    AAffA0nNPuCLAAAAAElFTkSuQmCCCREATE TABLE t1 (

    col1 VARCHAR(10),

    col2 VARCHAR(20),  INDEX (col1, col2(10))

    );

    Functional Key Parts

    在 MySQL 8.0.13版本及更高版本中,MySQL 支持表达式进行索引。这里,需要将运算表达式写在括号内进行缩印的声明。例如:

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    AAffA0nNPuCLAAAAAElFTkSuQmCC1 -- 方法索引 2 CREATE TABLE t1 ( 3     col1 INT, 4     col2 INT, 5     INDEX func_index ((ABS(col1))) 6 ); 7  8 CREATE INDEX idx1 ON t1 ((col1 + col2)); 9 10 CREATE INDEX idx2 ON t1 (11     (col1 + col2),12     (col1 - col2),13     col114 );15 16 ALTER TABLE t1 ADD INDEX ((col1 * 40) DESC);

    Functional Key Parts

    唯一索引

    通过 UNIQUE 创建的索引。索引列的内容非null值的时候必须是唯一的,null值可以不唯一。如果添加重复值,则会发生错误。如果在创建唯一索引的时候指定前缀值,那么前缀必须是唯一的。创建语法: CREATE UNIQUE INDEX unique_index_name ON table_name (key_part)

    全文索引

    全文索引,顾名思义,支持全文检索的索引。仅支持 Innodb 和 MyISAM 两种存储引擎。并且只能包括 CHAR, VARCHAR 和 TEXT 列,索引始终发生在整个列上,不支持前缀索引。(即使写了也没用)可以对字段进行全文检索。对于数据量比较大的数据集,先将数据加载到没有数据的表中,然后再添加索引,效率要比把数据直接向有索引的表中添加高。

    空间索引

    空间索引是为空间搜索提供一种合适的数据结构,以提高搜索速度。对于空间索引,作者研究并不多,这里大概介绍下空间索引的用处。等以后研究深刻后,再补上这部分内容。首先,空间索引是干什么用的?举例:当我们需要按照某个点,查询附近的50米内都有哪些客户存在。对于这个需求,可能的解法如下:

    1.我们可以根据用户的经纬度,去计算每个人跟我们的当前点的距离,然后跟50米去作对比。这在客户数据量少的时候,还可以这么做,数据量大的时候,将会特别的浪费性能。

    2.先画一个方框,把50米范围的数据的经纬度画出来,通过经纬度的值进行筛选后,得到一个正方形的区域,然后再进行计算。这时候,会少很多计算,但依然不是最优方案。

    3.使用空间索引。将空间按照一定规则划分为不同的区域,在检索的时候,根据设计的区域,取出相应的数据。空间索引结构图如下(图片来自知乎):

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    删除索引

    删除索引没啥好说的,语句如下:

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    AAffA0nNPuCLAAAAAElFTkSuQmCC1 DROP INDEX index_name ON talbe_name2 ALTER TABLE table_name DROP INDEX index_name

    DROP INDEX

    如果索引所在的列删除,那么该列对应的索引也会自动删除。

    索引优化

    主键优化

    表的主键是唯一且非空的索引,在使用InnoDB存储引擎的时候,表数据直接挂载在主键的叶子节点上,是查询速度最快的索引。

    如果表的内容很多,并且很重要。但是没有明显的列和列的集合作为主键的话,可以单独创建一个自动增长的值作为主键。当使用外链查询的时候,这个id可以作为指向内容的指针。

    外键优化

    如果你的表有很多列,你可以将查询频率比较低的列拆分到其他表格,并通过复制id的方式让它们与主表关联。这样,每个小表都会有个主键来快速查找其他数据。在查询的时候,就可以仅查询自己需要的列集。这时,查询会执行较少的 I/O 并且占用较少的内存。整体原则是:为了提高性能,尽可能少的从磁盘读取数据。这就是拆表的原则。

    文章来源:http://www.cnblogs.com/liyasong/

    展开全文
  • MySQL 索引创建的原则

    2020-02-23 18:45:59
    文章目录前言1、 对于查询频率高字段创建索引2、 对排序、分组、联合查询频率高字段创建索引3、 索引的数目不宜太多4、若在实际中,需要将多个列设置索引时,可以采用多列索引5、选择唯一性索引6、尽量使用数据...

    前言

    MySQL 索引的使用一直是工作中的重点,一个线上项目如果不能合理使用索引,那带来的危害可能是毁灭性的(数据库锁死、当机等)。

    所以这一块也是面试中的重点,那么,MySQL 创建索引的原则有哪些呢?

    一般来说,在 MySQL 中使用索引的原则有以下几点:

    1、 对于查询频率高的字段创建索引

    索引的目的就是提升查询速度,这一点毋庸置疑。所以对于查询频率高的字段要创建索引,如:用户表的手机号。

    2、 对排序、分组、联合查询频率高的字段创建索引

    3、 索引的数目不宜太多

    • 每创建一个索引都会占用相应的物理控件

    • 过多的索引会导致insert、update、delete语句的执行效率降低

    4、若在实际中,需要将多个列设置索引时,可以采用多列索引

    如:某个表(假设表名为Student),存在多个字段(StudentNo, StudentName, Sex, Address, Phone, BirthDate),其中需要对StudentNo,StudentName字段进行查询,对Sex字段进行分组,对BirthDate字段进行排序,此时可以创建多列索引

    index index_name (StudentNo, StudentName, Sex, BirthDate);      #index_name为索引名
    

    在上面的语句中只创建了一个索引,但是对4个字段都赋予了索引的功能。

    创建多列索引,需要遵循BTree类型,即第一列使用时,才启用索引。

    在上面的创建语句中,只有mysql语句在使用到StudentNo字段时,索引才会被启用,如:

    select * from Student where StudentNo = 1000;      #使用到了StudentNo字段,索引被启用。
    

    可以使用explain检测索引是否被启用,如:

    explain select * from Student where StudentNo = 1000;
    

    在这里插入图片描述
    附:EXPLAIN列的解释

    • table:显示这一行的数据是关于哪张表的
    • type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、index和ALL
    • type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
      一般来说,得保证查询至少达到range级别,最好能达到ref。
    • possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句
    • key: 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引
    • key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好
    • ref:显示索引的哪一列被使用了,如果可能的话,是一个常数
    • rows:MYSQL认为必须检查的用来返回请求数据的行数
    • Extra:关于MYSQL如何解析查询的额外信息。将在表4.3中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢

    5、选择唯一性索引

    唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。

    6、尽量使用数据量少的索引

    如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索需要的时间肯定要比对CHAR(10)类型的字段需要的时间要多。

    7、尽量使用前缀来索引

    如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提高检索速度。

    8、删除不再使用或者很少使用的索引

    表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再需要。数据库管理员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响。

    展开全文
  • 所以这一块也是面试中的重点,那么,MySQL 创建索引的原则有哪些呢? 一般来说,在 MySQL 中使用索引的原则有以下几点: 1、 对于查询频率高的字段创建索引 索引的目的就是提升查询速度,这一点毋庸置疑。所以对于...

    MySQL 索引的使用一直是工作中的重点,一个线上项目如果不能合理使用索引,那带来的危害可能是毁灭性的(数据库锁死、当机等)。

    所以这一块也是面试中的重点,那么,MySQL 创建索引的原则有哪些呢?

    一般来说,在 MySQL 中使用索引的原则有以下几点:

    1、 对于查询频率高的字段创建索引

    索引的目的就是提升查询速度,这一点毋庸置疑。所以对于查询频率高的字段要创建索引,如:用户表的手机号。

    2、 对排序、分组、联合查询频率高的字段创建索引

    3、 索引的数目不宜太多

    • 每创建一个索引都会占用相应的物理控件
    • 过多的索引会导致insert、update、delete语句的执行效率降低

    4、若在实际中,需要将多个列设置索引时,可以采用多列索引

    如:某个表(假设表名为Student),存在多个字段(StudentNo, StudentName, Sex, Address, Phone, BirthDate),其中需要对StudentNo,StudentName字段进行查询,对Sex字段进行分组,对BirthDate字段进行排序,此时可以创建多列索引

    index index_name (StudentNo, StudentName, Sex, BirthDate);      #index_name为索引名
    1
    

    在上面的语句中只创建了一个索引,但是对4个字段都赋予了索引的功能。

    创建多列索引,需要遵循BTree类型,即第一列使用时,才启用索引。

    在上面的创建语句中,只有mysql语句在使用到StudentNo字段时,索引才会被启用,如:

    select * from Student where StudentNo = 1000;      #使用到了StudentNo字段,索引被启用。
    1
    

    可以使用explain检测索引是否被启用,如:

    explain select * from Student where StudentNo = 1000;
    1
    

    在这里插入图片描述
    附:EXPLAIN列的解释

    • table:显示这一行的数据是关于哪张表的
    • type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、index和ALL
    • type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
      一般来说,得保证查询至少达到range级别,最好能达到ref。
    • possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句
    • key: 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引
    • key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好
    • ref:显示索引的哪一列被使用了,如果可能的话,是一个常数
    • rows:MYSQL认为必须检查的用来返回请求数据的行数
    • Extra:关于MYSQL如何解析查询的额外信息。将在表4.3中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢

    5、选择唯一性索引

    唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。

    6、尽量使用数据量少的索引

    如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索需要的时间肯定要比对CHAR(10)类型的字段需要的时间要多。

    7、尽量使用前缀来索引

    如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提高检索速度。

    8、删除不再使用或者很少使用的索引

    表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再需要。数据库管理员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响。

    展开全文
  • Mysql支持前缀索引,即对索引的前N个字符创建索引; Myisam支持前缀索引长度为1000字节;innodb支持前缀索引长度为767字节; 注意:在create table 创建索引时,长度对应是字符数; 限制长度为字节数,...
  • mysql建立多列索引有最左前缀的原则,即最左优先,如:如果有一个2列的索引(col1,col2),则已经对(col1)、(col1,col2)上建立了索引;如果有一个3列索引(col1,col2,col3),则已经对(col1)、(col1,col2)和(col1,col2,...
  • 在面试中,经常会遇到这种问题,如果我们设置联合索引的顺序是(a, b, c), 那么如果...最左前缀匹配原则:在MySQL建立联合索引时会遵守最左前缀匹配原则,即最左优先,在检索数据时从联合索引的最左边开始匹配。要...
  • 索引的创建原则

    2021-04-16 14:45:09
    索引的创建原则 基于合理数据库设计,经过深思熟虑后为表建立索引,是获得高性能数据库系统基础。而未经合理分析便添加索引,则会降低系统总体性能。索引虽然说提高了数据访问速度,但同时也增加了插入、...
  • 是什么索引用于快速查询某些特殊列某些行。如果没有索引, MySQL 必须从第一行开始,然后通过搜索整个表来查询有关行。表越大,查询成本越大。如果表有了索引的话,那么 MySQL 可以很快确定数据位置,而...
  • MySQL创建索引原则

    2020-11-28 16:00:12
    记录:索引用于快速的查询某些特殊列的某些行。...索引创建的原则: 为经常出现关键字order by、group by、distinct后面的字段,建立索引。 在这些字段上建立索引,可以有效的避免排序操作,如果建立的是
  • mysql的索引创建原则

    2020-03-16 23:18:24
    索引创建原则: 1.最左匹配原则: 比如a=1 and b=2, and c>3 and d=4, a b c d字段都创建了索引,但此时只用到了 a b索引;如果改成a=1 and b=2 and d=4 and c>3,将d和c对调下,此时用到了a b d索引 2.=和...
  • 所以这一块也是面试中的重点,那么,MySql创建索引的原则有哪些呢?一般来说,在mysql中使用索引的原则有以下几点:1、 对于查询频率高的字段创建索引索引的目的就是提升查询速度,这一点毋庸置疑。所以对于查询...
  • 建立索引的原则: 定义主键的数据列一定要建立索引。 定义有外键的数据列一定要建立索引。 对于经常查询的数据列最好建立索引。 对于需要在指定范围内的快速或频繁查询的数据列; 经常用在WHERE子句中的数据列...
  • 创建索引的原则

    2016-05-10 16:32:00
    1、索引创建原则: 在经常需要搜索列上创建索引,将加快查询速度。 在作为主键列上创建索引,强制该列唯一性和组织表中数据排列结构。 在经常用于连接列(主要是外键)上创建索引,加快连接速度。 ...
  • mysql索引创建原则

    2020-04-28 17:29:08
    为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引创建什么类型的索引。本小节将向读者介绍一些索引的设计原则。 1.选择唯一性索引 唯一性索引的值是唯一,可以更快速通过该索引来...
  • 索引创建原则

    2018-09-06 14:13:00
    每个索引都会占用一定物理空间。若索引多了,不但会占用大量物理空间,而且,也会影响到整个数据库运行性能。 当表中有外键或者主键时候,就最好为其建立索引。 对于这些需要在指定范围内快速或者频繁查询...
  • 索引 创建原则

    2018-09-15 17:15:00
    搜索的索引列,不一定是所要选择列。换句话说,最适合索引的列是出现在 WHERE子句中列,或连接子句中指定列,而不是出现在 SELECT 关键字后选择列表中列。 使用惟一索引。考虑某列中值分布。索引的...
  • Mysql索引创建原则

    2020-04-09 09:11:02
    在mysql中使用索引的原则有以下几点: 1、 对于查询频率高的字段创建索引; 2、 对排序、分组、联合查询频率高的字段创建索引; 3、 索引的数目不宜太多 原因:a、每创建一个索引都会占用相应的物理控件;  b、...
  • 是否要为表增加索引索引建立在那些字段上,是创建索引前必须要考虑问题。解决此问题一个比较好方法,就是分析应用程序业务处理、数据使用,为经常被用作查询条件、或者被要求排序字段

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,955
精华内容 782
关键字:

索引创建的原则