索引初识一 MySql
admin
2023-05-19 01:22:21
0

1 mysql索引类型【主要分4类索引】

   创建索引:

        1.添加PRIMARY KEY(主键索引) 【主键:一种唯一性索引,必须指定为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(全文索引) 【从3.23.23版开始支持全文索引和全文检索,FULLTEXT,可以在char、varchar或text类型的列上创建

        mysql> ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 

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

        mysql> ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, column3`) 

    删除索引:

                DROP INDEX index_name ON talbe_name

                ALTER TABLE table_name DROP INDEX index_name

                ALTER TABLE table_name DROP PRIMARY KEY


2 mysql索引存储格式

   存储引擎可以选择Hash或BTree索引【默认】方法,Hash索引方法只能用于=或<=>的等式比较。 

  B树跟Hash跟全文搜索下期再细分。


3 如何根据sql语句确定索引类型

  a.性能优化过程中,选择在哪个列上创建索引是最重要的步骤之一。可以考虑使用索引的主要有两种类型的列:在where子句中出现的列,在join子句中出现的列。 

  b.考虑列中值的分布,索引的列的基数越大,索引的效果越好。 

  c.使用短索引,如果对字符串列进行索引,应该指定一个前缀长度,可节省大量索引空间,提升查询速度。 

  d.利用最左前缀, 顾名思义,就是最左优先,比如我们创建了lname_fname_age多列索引,相当于创建了(lname)单列索引,(lname,fname)组合索引以及(lname,fname,age)组合索引 

  e.不要过度索引,只保持所需的索引。每个额外的索引都要占用额外的磁盘空间,并降低写操作的性能。 

  在修改表的内容时,索引必须进行更新,有时可能需要重构,因此,索引越多,所花的时间越长。 

  MySQL只对一下操作符才使用索引:<,<=,=,>,>=,between,in, 

  以及某些时候的like(不以通配符%或_开头的情形)。


4 案例和原理

         以我公司房屋数据库为例,总共700w的数据。同样一条搜索语句SELECT id from t_basic_house where storey_name like '6跃7%';

         非索引:28.525s,有索引:0.263s。

         原理:非索引状态下想要搜索 “6跃7”的数据,必须整张表的每行数据,效率极低。

                   索引状态下索引是在storey_name 上排序的。现在,当查找storey_name 信息时,就不需要逐行搜索全表,可以利用索引进行有序查找(如二分查找法),并快速定位到匹配的值,以节省大量搜索时间。


        

拓展:UUID的性能并不比自增ID差很多,这取决于UUID的生成算法。举个例子MongoDB所采用的ObjectId就是一个比较优秀的UUID策略,其组成是时间戳+机器码+进程码+自增数,其中机器码和进程码都可以一次性生成,这样得到一个ObjectId仅仅之比自增ID多了一个时间戳的获取。另外考虑到自增ID都要做主键唯一索引,而UUID可以只做索引,不做唯一索引(利用其特性,可以不考虑唯一性过滤),其性能可以说并不比自增ID差。

           至于使用UUID还是自增ID主要还是看项目是否足够庞大,数据量是否足够多。从使用方便性上来说自增ID使用简单,不需要额外支持,而UUID相对麻烦一些,涉及到UUID算法的选取、程序的嵌入等等。而从应对庞大系统的效果上来说,UUID就比自增ID显得优秀得多。怎么选择就是看自己的实际情况,按需选择。

   MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试) 

http://blog.csdn.net/mchdba/article/details/52336203

        

         

相关内容

热门资讯

沈伯洋妄称“双城论坛是渗透破口... 海峡导报综合报道 民进党台北市长参选人沈伯洋日前妄称台北、上海双城论坛成“渗透破口”,台北市府回呛沈...
环氧树脂多少钱一公斤 基本上现在市面上出售的环氧树脂的价格也要达到一公斤20元左右,其实环氧树脂的价格也会受到品牌的影响,...
6公斤洗衣机能洗多少衣服 6公斤洗衣机能洗多少衣服:如果四个人的衣服大约15件T恤就可以洗了;如果两个人的衣服是两件中型棉袄,...
空调夏天开多少度合适 空调夏天一般开到26到28度比较合适。因为综合考虑温度和电损耗,建议都开在26度以上,不要和室外温差...
空调晚上睡觉制冷多少度合适 建议开到26摄氏度最为合适。因为人体在休息时免疫力会下降,晚上睡觉如果室温过低的话,容易造成第二天浑...
荒唐!绿营官员竟称:再选赖清德... 台立法机构日前通过修正案,将“三班护病比”正式纳入医疗相关条例。“三班护病比”是指医院按白班、小夜班...
特朗普称不希望有人推动“台独”... 海峡导报综合报道 美国总统特朗普日前接受媒体访问时提到“不希望有人推动‘台独’”,台民意机构国民党团...
演员卢昱晓向《给阿嬷的情书》致... 5月17日,女演员卢昱晓发文向电影《给阿嬷的情书》致歉,全文如下:大家的批评我都看到了。在此,向电影...
AI赋能中医,市七医院“中医药... 当AI开始“望闻问切”,当中医迈入智能新时代。2026年5月16日,在2026结合医学·上海论坛上,...
北大教授乔晓春:AI时代知识不... 5月17日,2026搜狐科技年度论坛在京盛大开幕。来自科学界、学术界和产业界的近三十位嘉宾共襄盛会,...