精华内容
下载资源
问答
  • mysql添加索引

    千次阅读 2019-02-21 13:14:40
    给表添加索引 ALTER table tableName ADD INDEX indexName(columnName) columnName添加索引的字段 indexName索引别名 可以任意命名

    给表添加索引

    ALTER table tableName ADD INDEX indexName(columnName)
    

    columnName添加索引的字段
    indexName索引别名 可以任意命名

    展开全文
  • MySql添加索引

    2017-12-08 15:27:35
    命名规则:表名_字段名 *1、需要加索引的字段,要在...对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c

    命名规则:表名_字段名

    *1、需要加索引的字段,要在where条件中
    *2、数据量少的字段不需要加索引
    *3、如果where条件中是OR关系,加索引不起作用
    *4、符合最左原则
    联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。

    两个或更多个列上的索引被称作复合索引。
    利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引 不同于使用两个单独的索引。复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。如果您知 道姓,电话簿将非常有用;如果您知道姓和名,电话簿则更为有用,但如果您只知道名不姓,电话簿将没有用处。
    所以说创建复合索引时,应该仔细考虑列的顺序。对索引中的所有列执行搜索或仅对前几列执行搜索时,复合索引非常有用;仅对后面的任意列执行搜索时,复合索引则没有用处。

    1.添加PRIMARY KEY(主键索引):

    ALTER TABLE table_name ADD PRIMARY KEY ( column )

    2.添加UNIQUE(唯一索引) :

    ALTER TABLE table_name ADD UNIQUE ( column )

    3.添加INDEX(普通索引) :
    ALTER TABLE table_name ADD INDEX index_name ( column )

    4.添加FULLTEXT(全文索引) :
    ALTER TABLE table_name ADD FULLTEXT ( column)

    5.添加多列索引:
    ALTER TABLE table_name ADD INDEX index_name ( column1, column2, column3 )

    什么情况下应不建或少建索引
    表记录太少
    经常插入、删除、修改的表
    数据重复且分布平均的表字段
    经常和主字段一块查询但主字段索引值比较多的表字段

    展开全文
  • 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添加索引

    千次阅读 2019-06-19 10:10:47
    添加索引是为了提高数据库查询性能,索引是最物美价廉的东西了,不用加内存,不用改程序,不用调sql,只要执行个正确的create index ,查询的速度就可能提高百倍千倍,这可是有诱惑力的,可是天下没有没费的午餐,...

    这里先简单介绍一下索引:

    添加索引是为了提高数据库查询性能,索引是最物美价廉的东西了,不用加内存,不用改程序,不用调sql,只要执行个正确的create index ,查询的速度就可能提高百倍千倍,这可是有诱惑力的,可是天下没有没费的午餐,查询的速度的提高是以牺牲insert update delete的速度为代价的。而且索引大小一般是数据的三分之一  ,再加上索引要加载进内存的,如果全部字段都加索引会以牺牲内存为代价的,所以才要设当的添加索引。

    这里简单介绍一下mysql中常用索引:

    在添加索引之前最好先查看一下该表中已存在哪些索引:show index from 表名;

    1、主键索引

    注意: 主键索引一张表中只能有一个,但是可以添加多个索引 比如:唯一索引、普通索引、全文索引。

    主键索引:一般在建表的时候就添加了 比如:id 一般是主键索引加自动递增。

    建表后添加主键索引 :alter table table_name add primary key (column name);

    主键索引的特点:不能为空且唯一。

    2、普通索引

    创建普通索引: alter table table_name add index 索引名(column1,column2);

    3、唯一索引

    创建唯一索引:ALTER TABLE `table_name` ADD UNIQUE (`column`);

    唯一索引与主键索引的区别:

    唯一索引:可以有多个null 但数据内容不能重复

    主键索引:不能为null,且内容只能唯一。

    两个区别就在于主键索引不能为null 唯一索引可以有多个null 其余都一样。

    4、全文索引

    全文索引只有MyISAM有效(mysql5.6之后InnoDB也支持了全文索引)[5.7不支持MyISAM]

    全文索引主要针对文本文件,比如文章、标题。

    在创建表时创建全文索引:

        CREATE TABLE `article` (
        `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
         `title` varchar(200) DEFAULT NULL,
     `    content` text,
          PRIMARY KEY (`id`),
          FULLTEXT KEY `title` (`title`,`content`)
          ) ENGINE=MyISAM(5.6之后InnoDB也支持全文索引 、5.7不支持MyISAM引擎) DEFAULT CHARSET=utf8;

    在现有表中创建全文索引:

    ALTER TABLE article ADD FULLTEXT INDEX fulltext_article(title,content);

    创建完全文索引之后使用也有要注意的地方:

    众所周知在数据库中进行模糊查询是使用like关键字进行查询的,例如:

    SELECT * FROM article WHERE content LIKE ‘%查询字符串%';

    那么,我们在使用全文索引也这样使用吗?当然不是,我们必须使用特有的语法才能使用全文索引进行查询,例如,我们想要在article表的title和content列中全文检索指定的查询字符串,我们可以如下编写SQL语句:

    SELECT * FROM article WHERE MATCH(title,content) AGAINST (‘查询字符串');

    强烈注意:MySql自带的全文索引只能对英文进行全文检索,目前无法对中文进行全文检索。如果需要对包含中文在内的文本数据进行全文检索,我们需要采用Sphinx(斯芬克斯)/Coreseek技术来处理中文。

    注:目前,使用MySql自带的全文索引时,如果查询字符串的长度过短将无法得到期望的搜索结果。MySql全文索引所能找到的词默认最小长度为4个字符。另外,如果查询的字符串包含停止词,那么该停止词将会被忽略。

    如果可能,请尽量先创建表并插入所有数据后再创建全文索引,而不要在创建表时就直接创建全文索引,因为前者比后者的全文索引效率要高。

    删除索引sql语句:alter table table_name drop index 索引名;

    通过上面的简单介绍后,那么应该在哪些字段上添加索引呢?

        1、 频繁查询的字段,应该创建索引。

        2、更新非常频繁的字段,不应该创建索引。

        3、唯一性太差的字段,比如 gender字段,就不应该创建索引。

        4、不会出现在where条件之后的字段,不应该创建索引。

    满足一下条件,应该创建索引:

            1、频繁要查询的字段,经常出现在where条件后面的字段,应该创建索引。

            2、更新不频繁的字段,可以创建索引。

    索引使用的注意事项

        1.对于创建的多列索引,只要查询条件使用了最左边的列,索引一般就会被使用。

    •             比如我们对title,content 添加了复合索引
    •             select * from table_name where title = 'test';会用到索引
    •             select * from table_name where content = 'test';不会用到索引

        2.对于使用like的查询,查询如果是 ‘%a'不会使用到索引 ,而 like 'a%'就会用到索引。最前面不能使用%和_这样的变化值

        3.如果条件中有or,即使其中有条件带索引也不会使用。

        4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来。

    •         查看索引的使用情况:show status like‘Handler_read%';  
    •         handler_read_key:这个值越高越好,越高表示使用索引查询到的次数。
    •         handler_read_rnd_next:这个值越高,说明查询低效。

    展开全文
  • mysql 添加索引

    2016-07-20 15:36:11
    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索引原理:



    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` )


    查看索引
    mysql> show index from tblname;
    mysql> show keys from tblname;
    · Table
    表的名称。
    · Non_unique
    如果索引不能包括重复词,则为0。如果可以,则为1。
    · Key_name
    索引的名称。
    · Seq_in_index
    索引中的列序列号,从1开始。
    · Column_name
    列名称。
    · Collation
    列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)。
    · Cardinality
    索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机 会就越大。
    · Sub_part
    如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。
    · Packed
    指示关键字如何被压缩。如果没有被压缩,则为NULL。
    · Null
    如果列含有NULL,则含有YES。如果没有,则该列含有NO。
    · Index_type
    用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。
    · Comment


    删除索引:ALTER TABLE `table_name` DROP INDEX|UNIQUE|PRIMARY KEY `index_name`

    展开全文
  • MySQL添加索引

    万次阅读 2015-09-17 11:37:41
    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 增加索引

    2013-02-28 10:08:58
    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 ...
  • mysql 索引】mysql 添加索引

    千次阅读 2017-11-24 11:35:28
    2、添加索引sql 3、索引所用的算法 4、补充下概念 5、索引的缺点 6、经典案例一、什么是索引?  索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL...
  • mysql添加索引语句

    万次阅读 2019-04-10 10:38:30
    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添加索引 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添加索引须知

    2020-12-16 18:12:38
    添加索引是为了提高数据库查询性能,索引是最物美价廉的东西了,不用加内存,不用改程序,不用调sql,只要执行个正确的create index ,查询的速度就可能提高百倍千倍,这可是有诱惑力的,可是天下没有没费的午餐,...
  • mysql 添加索引 创建索引

    万次阅读 2018-05-08 10:59:46
    转载自https://www.cnblogs.com/a-du/p/7117837.html---------------------------------------------------------------------------- 1.添加PRIMARY KEY(主键索引) ALTER TABLE `table_name` ADD PRIMARY KEY (`...
  • MySQL添加索引命令

    千次阅读 2011-07-27 16:12:00
    MySQL添加索引命令 (2007-12-12 20:05)原文地址:http://blog.chinaunix.net/space.php?uid=20582526&do=blog&cuid=441156分类: mysql1.PRIMARY KEY(主键索引)mysql>AL
  • mysql添加索引造成的影响

    千次阅读 2014-10-11 13:38:35
    mysql添加索引造成的影响如下: 1、DML(数据操作语言)影响,在表上添加缩影会直接影响写操作性能(因为添加记录的同时还有创建相应记录的索引,这也是要耗资源的。)。 2、DDL(数据定义语言)影响,随着表大小...
  • MySQL 添加索引,删除索引及其用法

    万次阅读 多人点赞 2019-04-18 10:34:39
    一.索引的作用 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出... 在数据量和访问量不大的情况下,mysql访问是非常快的,是否加索引对访问影响...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 243,252
精华内容 97,300
关键字:

mysql增加索引

mysql 订阅