MySQL的索引有哪些

一、索引是什么#

       索引,在MySQL中也叫“键(key)”,是存储引擎用于快速找到记录的一种数据结构。如果把数据库的一张表比作一本书,那索引则是这本书的目录,通过目录,我们能快速找到我们想要的主题所对应的页码。索引的作用即类似于书的目录,帮助我们快速定位到相关数据行的位置。

       好的索引能使查询的性能提高几个数量级,而差的索引在大数据量的表中甚至会使性能急剧下降。“最优”的索引有时比一个“好的”索引性能要好两个数量级。

 

二、索引有哪些类型#

       索引有很多种类型,可以为不同的场景提供更好的性能。在MySQL中,索引是在存储引擎层而非服务器层实现的,而不同的存储引擎的索引的工作方式并不一样,且不是所有的存储引擎都支持所有类型的索引。同时,值得一提的是,不同的存储引擎对同一类型的索引,其底层的实现一般是不同的。

      MySQL支持以下几种类型的索引。

      (1)B-Tree索引

      (2)哈希索引

      (3)空间数据索引(R-Tree)

      (4)全文索引

      (5)其他索引类别

      下面我将一一展开进行介绍。

 

三、 B-Tree索引#

(一)B-Tree索引只是一个统称术语#

       B-Tree索引是最常见的索引类型,它使用B-Tree数据结构来存储数据,大多数MySQL引擎都支持这种索引。(Archive引擎是一个例外:5.1之前Archive不支持任何索引,直到5.1才开始支持单个自增列AUTO_INCREMENT的索引。)

       在MySQL中,“B-Tree”只是一个术语的统称,因为不同的存储引擎可能使用的是其他存储结构来实现这种索引,但仅仅只是命名为“B-Tree”。例如,NDB集群存储引擎内部实际上使用了T-Tree结构存储这种索引;InnoDB则使用的是B+Tree结构存储这种索引。只是它们都将其命名为“B-Tree”。

(二)B-Tree索引在不同引擎中的差异#

       不同的存储引擎使用B-Tree索引的方式也不同,性能也各有不同,各有优劣。下面拿MyISAM 和InnoDB进行对比。

 

表3-1 MyISAM和InnoDB中B-Tree的相关差异

 

MyISAM

InnoDB

存储方式

前缀压缩技术

按照原数据格式

引用方式

通过数据的物理位置引用被索引的行

根据主键引用被索引的行

 

(三)InnoDB的B-Tree技术实现是B+Tree#

       上面我们也提到,InnoDB的B-Tree索引从技术上来说实际上是B+Tree实现的,这种实现使得所有的值都是按照顺序存储的(所以很适合查找范围数据),并且每一个叶子页到根的距离相同。MyISAM使用的结构有所不同,但基本思想类似。

图3.1 建立在B-Tree结构上的索引(从技术上来说是B+Tree)

 

       B-Tree索引能够加快访问数据的速度,靠的就是上面这种数据结构。它使得存储引擎不再需要进行全表扫描来获取所需数据,取而代之的是从索引的根节点开始搜索。

根节点中存放了指向子节点的指针,存储引擎根据这些指针向下层查找。通过比较节点页的值和要查找的值可以找到合适的指针进入下层子节点,这些指针实际上定义了子节点页中值的上限和下限。最终存储引擎要么能找到对应的值,要么该记录不存在。叶子节点页有相应的指针,但叶子节点的指针不是指向其他的节点页,而是指向被索引的数据(不同引擎的“指针”类型不同)。

       这里值得一提的是,树的深度和表的大小直接相关,表的数据量越大,树的层数越多。

 

(四)创建一个多列索引#

复制代码

CREATE TABLE People (last_name    varchar(50)        not null,first_name   varchar(50)        not null,dob          date             not null,gender       enum(‘m’,‘f’)    not null,key(last_name,first_name,dob));

复制代码

       索引对多个值进行排序的依据是CREATE TABLE语句中定义索引时列的顺序。

 

(五)B-Tree索引支持的查询类型#

       MySQL的B-Tree索引适用于全键值、键值范围或键前缀查找,其中键前缀查找只适用于根据最左前缀的查找。前面所述的索引可细分为如下几种类型。

     (1)全值匹配#

       全值匹配指的是和索引中的所有列进行匹配。

       例如上面的People表的索引(last_name,first_name,dob)可以用于查找last_name=’Zeng’,first_name=’Chuang’,dob=’1996-01-01’的人。这就是使用了索引中的所有列进行匹配,即全值匹配。

     (2)匹配最左前缀#

       可以只使用索引的第一个列进行匹配。

       例如可以用于查找last_name=’Zeng’的人,即用于查找姓为Zeng的人,这里只使用了索引的最左列进行匹配,即匹配最左前缀。

     (3)匹配列前缀#

       可以只匹配某一列的值的开头部分。

       例如可以用于查找last_name LIKE ‘Z%’的人,即用于查找所有以Z开头的姓的人,这里只使用了索引最左列的前缀进行匹配,即匹配列前缀。

     (4)匹配范围值#

       可以只适用索引的第一列查找符合某个范围内的数据。

       例如可以用于查找last_name BETWEEN ‘Qiu’ AND ‘Zeng’的人,即用于查找姓在Qiu和Zeng之间的人,这里只使用了索引最左列的前缀进行范围匹配,即匹配范围值。

     (5)精确匹配某一列并范围匹配另外一列#

       可以使第一列全匹配,第二列范围匹配。

       例如可以用于查找last_name=’Zeng’ AND first_name LIKE ’C%’的人,即用于查找姓是Zeng,名字以C开头的人,这里使用了索引的最左列精确匹配,第二列进行范围匹配,即精确匹配某一列并范围匹配另外一列。

     (6)只访问索引的查询#

       查询只需访问索引,而无须访问数据行。

       例如select last_name, first_name where last_name=’Zeng’; 这里只查询索引所包含的last_name和first_name列,则无须读取数据行。

 

(六)B-Tree索引的限制#

       根据上面介绍的B-Tree索引支持的查询类型,我们可以知道,它同样会存在一些限制。

     (1)只能按照索引的最左列开始查找。#

       例如People表中的索引无法用于查找first_name为’Chuang’的人,也无法查找某个特定生日的人,因为这两个列都不是最左数据列。

     (2)只能按照索引最左列的最左前缀进行匹配。#

       例如People表中的索引无法查找last_name LIKE ‘%eng’的人,虽然last_name就是此索引的最左列,但MySQL索引无法查找以‘eng’结尾的last_name的记录。

     (3)只能按照索引定义的顺序从左到右进行匹配,不能跳过索引中的列。#

       例如People表中的索引无法用于查找last_name=’Zeng’ AND bod=’1996-01-01’的人,因为MySQL无法跳过索引中的某一列而使用索引中最左列和排在末尾的列进行组合。如果不指定索引中中间的列,则MySQL只能使用索引的最左列,即第一列。

     (4)如果查询中有某个列的范围查询,则其右边所有列都无法使用索引优化查找。#

       例如有这样一个查询:where last_name=’Zeng’ AND first_name LIKE ’C%’ AND dob=’1996-01-01’; 这个查询只能使用索引的前两列,因为这里LIKE是一个范围条件,则first_name后面的索引列都将失效。(优化点:尽量不要在索引列中使用LIKE等范围条件,改用多个等于条件来替代,保证后面的索引列能生效。)

       阅读到这里,我们应该明白了索引列的顺序是多么的重要,上面的这些限制都和索引列的顺序有关。在性能优化时,可能需要使用相同的列但顺序不同的索引来满足不同类型的查询需求。

 

四、哈希索引#

(一)哈希索引是什么#

       哈希索引(hash index)基于哈希表实现,只有精确匹配索引所有列的查询才有效。

       对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hash code),不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,并在哈希表中保存指向每个数据行的指针。

图4.1 hash索引图解

(二)不同存储引擎对哈希索引的支持#

表4-1 各存储引擎对哈希索引的支持情况概览

 

Memory引擎

NDB集群引擎

InnoDB引擎

是否支持哈希索引

显示支持,是Memory引擎表的默认索引类型(也支持B-Tree索引)

支持唯一哈希索引,所起作用特殊

自适应哈希索引(adaptive hash index)

(1)   Memory引擎的哈希索引#

       Memory引擎不仅支持唯一哈希索引,还支持非唯一哈希索引。非唯一哈希索引指的是:如果多个列的哈希值相同,索引会以链表的方式存放多个指向不同记录的指针到同一个哈希条目中。

图4.2 链表方式存放哈希索引 

 

       使用Memory引擎在建表时创建哈希索引

复制代码

CREATE TABLE testhash (fname VARCHAR(50) NOT NULL,Lname VARCHAR(50) NOT NULL,KEY USING HASH(fname)) ENGINE=MEMORY;

复制代码

(2)   NDB集群引擎的哈希索引#

        后续将深入阅读官方文档,理解NDB集群引擎中哈希索引的作用:https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-ndbd-definition.html

 (3)   InnoDB引擎的哈希索引#

        InnoDB引擎有一个特殊的功能叫“自适应哈希索引(adaptive hash index)”:当InnoDB注意到某些索引值被使用得非常频繁时,它会在内存中基于B-Tree索引之上再创建一个哈希索引,让B-Tree索引也具有哈希索引的一些优点,如快速的哈希查找。

       “自适应哈希索引”是一个完全自动的、内部的行为,用户无法控制或配置,不过如果有必要,完全可以关闭该功能。

 (三)哈希索引的优势、限制及适用场景#

 (1)优势:哈希索引查找的速度非常快。#

        原因:索引自身只需存储对应的哈希值,使得索引的结构十分紧凑。

 (2)哈希索引的限制#

        1)不能使用索引中的值来避免读取行。因为哈希索引只包含哈希值和行指针,而不存储字段值。

        2)不能用于排序。因为哈希索引数据不是按照索引值顺序存储的。

        3)不支持部分索引列匹配查找。因为哈希索引必须使用索引列的全部内容来计算哈希值。

        4)只支持等值比较查询(包括=、IN()、< = >),不支持任何范围查询(如where price > 100)。

        5)当出现哈希冲突时(不同的索引列值却有相同的哈希值),访问速度会变慢。因为存储引擎必须遍历链表中所有的行指针,逐行进行比较,知道找到所有符合条件的行。

        6)若哈希冲突很多,一些索引维护操作的代价也会很高。如:在某个哈希冲突很多的列上建立哈希索引,当从表中删除一行时,存储引擎需要遍历对应哈希值的链表中的每一行,找到并删除对应行的引用。冲突越多,代价越大。

 (3)哈希索引的适用场景#

        因为上面的这些限制,使得哈希索引适用的场景比较有限。而一旦适用哈希索引,则它带来的性能提升将非常显著。

        如,在数据仓库应用中有一种经典的“星型”schema,需要许多关联才能建立查找表,哈希索引就非常适合查找表的需求。

(四)创建自定义哈希索引#

(1)思路#

在B-Tree基础上创建一个伪哈希索引。这和真正的哈希索引不是一回事,因为还是使用B-Tree进行查找,但是它使用哈希值而不是键本身进行索引查找。只需要在查询的WHERE字句中手动指定使用哈希函数。

(2)哈希索引查找实例#

一张表中存储了大量的URL,并需要根据URL进行搜索查找。如果使用B-Tree来存储URL,存储的内容会很大。正常情况下会有如下查询:

SELECT id FROM url WHERE url=”http://www.mysql.com”;

若删除原来URL列上的索引,而新增一个被索引的url_crc列,使用CRC32做哈希,就可以使用下面的方式查询:

SELECT id FROM url WHERE url=”http://www.mysql.com” AND url_crc=CRC32(“http://www.mysql.com”);

这样做性能会非常高,因为MySQL优化器会使用这个选择性很高而体积很小的基于url_crc列的索引来完成查找。及时有多个记录相同的索引值,查找仍然很快,因为MySQL优化器会先筛选出匹配的索引行记录,然后根据具体的url值进行比对,返回完全符合条件的行。

 (3)使用触发器维护哈希值#

新增一列url_crc列之后需要维护这个哈希值。可以手动维护,也可以使用触发器实现。

首先创建如下表:

复制代码

CREATE TABLE pseudohash (id  int  unsigned  NOT  NULL  auto_increment,url  varchar(255)  NOT NULL,url_crc  int unsigned  NOT NULL DEFAULT 0,PRIMARY KEY(id));

复制代码

然后创建触发器:

复制代码

DELIMITER //CREATE TRIGGER pseudohash_crc_ins BEFORE INSERT ON pseudohash FOR EACH ROW BEGINSET NEW.url_crc=crc32(NEW.url);END;//CREATE TRIGGER pseudohash_crc_upd BEFORE UPDATE ON pseudohash FOR EACH ROW BEGINSET NEW.url_crc=crc32(NEW.url);END;//DELIMITER ;

复制代码

最后验证触发器如何维护哈希索引:

INSERT INTO pseudohash(url) VALUES(‘http://www.mysql.com’);
SELECT * FROM pseudohash;UPDATE pseudohash SET url=‘http://www.mysql.com’ WHERE id=1;
SELECT * FROM pseudohash;

(4)规避使用SHA1()和MD5()#

SHA1()和MD5()计算出来的哈希值是非常长的字符串,会浪费大量空间,比较时也会更慢。SAH1()和MD5()是强加密函数,设计目标是最大限度消除冲突,但这里并不需要这样高的要求。

简单哈希函数的冲突在一个可以接受的范围,同时又能够提供更好的性能。

(5)处理哈希冲突#

1)自定义哈希函数

如果表的数据量非常大,CRC32()会出现大量的哈希冲突,则可以考虑自己实现一个简单的64位哈希函数。这个自定义函数要返回整数,而不是字符串。一个简单的办法可以使用MD5()返回值的一部分来作为自定义哈希函数。这可能比自己写一个哈希算法的性能要查,但这样实现最简单:

SELECT CONV(RIGHT(MD5(‘http://www.mysql.com’),16),16,10) AS HASH64;

注:CONV(N,from_base,to_base)

N是要转换的数据,from_base是原进制,to_base是目标进制。

2)WHERE字句中包含常量值

当使用哈希索引进行查询的时候,必须在WHERE字句中包含常量值:

SELECT id FROM url WHERE url=“http://www.mysql.com” AND url_crc=CRC32(“http://www.mysql.com”);

  因为所谓的“生日悖论”,出现哈希冲突的概率的增长速度可能比想象的要快得多。CRC32()返回的是32位的整数,当索引有93000条记录时出现冲突的概率是1%。

      如果不想查询具体值,例如只是统计记录数(不精确的),则可以不带入列值,直接使用CRC32()的哈希值查询即可。

      还可以使用如FNV64()函数作为哈希函数,这是移植自Percona Server的函数,可以以插件的方式在任何MySQL版本中使用,哈希值为64位,速度快,且冲突比CRC32()要少很多。

 

五、空间数据索引(R-Tree)#

  MyISAM表支持空间索引,可以用作地理数据存储。和B-Tree索引不同,这类索引无须前缀索引。空间索引会从所有维度来索引数据。查询时,可以有效地使用任意维度来组合查询。必须使用MySQL的GIS相关函数如MBRCONTAINS()等来维护数据。MySQL的GIS支持并不完善,所以大部分人都不会使用这个特性。

      开源关系数据库系统中对GIS的解决方案做得比较好的是PostgreSQL和PostGIS。

https://github.com/djvb5gwz/kdnyzskenz/discussions/1102
https://github.com/tygq5nux/jkgibzxucg/discussions/1088
https://github.com/djvb5gwz/kdnyzskenz/discussions/1103
https://github.com/tygq5nux/jkgibzxucg/discussions/1089
https://github.com/djvb5gwz/kdnyzskenz/discussions/1104
https://github.com/tygq5nux/jkgibzxucg/discussions/1090
https://github.com/djvb5gwz/kdnyzskenz/discussions/1105
https://github.com/tygq5nux/jkgibzxucg/discussions/1091
https://github.com/djvb5gwz/kdnyzskenz/discussions/1106
https://github.com/tygq5nux/jkgibzxucg/discussions/1092
https://github.com/djvb5gwz/kdnyzskenz/discussions/1107
https://github.com/tygq5nux/jkgibzxucg/discussions/1093
https://github.com/djvb5gwz/kdnyzskenz/discussions/1108
https://github.com/tygq5nux/jkgibzxucg/discussions/1094
https://github.com/djvb5gwz/kdnyzskenz/discussions/1109
https://github.com/tygq5nux/jkgibzxucg/discussions/1095
https://github.com/djvb5gwz/kdnyzskenz/discussions/1110
https://github.com/tygq5nux/jkgibzxucg/discussions/1096
https://github.com/djvb5gwz/kdnyzskenz/discussions/1111
https://github.com/tygq5nux/jkgibzxucg/discussions/1097
https://github.com/djvb5gwz/kdnyzskenz/discussions/1112
https://github.com/djvb5gwz/kdnyzskenz/discussions/1113
https://github.com/tygq5nux/jkgibzxucg/discussions/1098
https://github.com/djvb5gwz/kdnyzskenz/discussions/1114
https://github.com/tygq5nux/jkgibzxucg/discussions/1099
https://github.com/djvb5gwz/kdnyzskenz/discussions/1115
https://github.com/tygq5nux/jkgibzxucg/discussions/1100
https://github.com/djvb5gwz/kdnyzskenz/discussions/1116
https://github.com/tygq5nux/jkgibzxucg/discussions/1101
https://github.com/djvb5gwz/kdnyzskenz/discussions/1117
https://github.com/tygq5nux/jkgibzxucg/discussions/1102
https://github.com/djvb5gwz/kdnyzskenz/discussions/1118
https://github.com/tygq5nux/jkgibzxucg/discussions/1103
https://github.com/djvb5gwz/kdnyzskenz/discussions/1119
https://github.com/tygq5nux/jkgibzxucg/discussions/1104
https://github.com/djvb5gwz/kdnyzskenz/discussions/1120
https://github.com/tygq5nux/jkgibzxucg/discussions/1105
https://github.com/djvb5gwz/kdnyzskenz/discussions/1121
https://github.com/tygq5nux/jkgibzxucg/discussions/1106
https://github.com/djvb5gwz/kdnyzskenz/discussions/1122
https://github.com/djvb5gwz/kdnyzskenz/discussions/1123
https://github.com/tygq5nux/jkgibzxucg/discussions/1107
https://github.com/djvb5gwz/kdnyzskenz/discussions/1124
https://github.com/tygq5nux/jkgibzxucg/discussions/1108
https://github.com/tygq5nux/jkgibzxucg/discussions/1109
https://github.com/djvb5gwz/kdnyzskenz/discussions/1125
https://github.com/tygq5nux/jkgibzxucg/discussions/1110
https://github.com/djvb5gwz/kdnyzskenz/discussions/1126
https://github.com/tygq5nux/jkgibzxucg/discussions/1111
https://github.com/djvb5gwz/kdnyzskenz/discussions/1127
https://github.com/tygq5nux/jkgibzxucg/discussions/1112
https://github.com/djvb5gwz/kdnyzskenz/discussions/1128
https://github.com/tygq5nux/jkgibzxucg/discussions/1113
https://github.com/djvb5gwz/kdnyzskenz/discussions/1129
https://github.com/tygq5nux/jkgibzxucg/discussions/1114
https://github.com/djvb5gwz/kdnyzskenz/discussions/1130
https://github.com/tygq5nux/jkgibzxucg/discussions/1115
https://github.com/djvb5gwz/kdnyzskenz/discussions/1131
https://github.com/tygq5nux/jkgibzxucg/discussions/1116
https://github.com/djvb5gwz/kdnyzskenz/discussions/1132
https://github.com/tygq5nux/jkgibzxucg/discussions/1117
https://github.com/djvb5gwz/kdnyzskenz/discussions/1133
https://github.com/tygq5nux/jkgibzxucg/discussions/1118
https://github.com/djvb5gwz/kdnyzskenz/discussions/1134
https://github.com/tygq5nux/jkgibzxucg/discussions/1119
https://github.com/djvb5gwz/kdnyzskenz/discussions/1135
https://github.com/tygq5nux/jkgibzxucg/discussions/1120
https://github.com/djvb5gwz/kdnyzskenz/discussions/1136
https://github.com/djvb5gwz/kdnyzskenz/discussions/1137
https://github.com/tygq5nux/jkgibzxucg/discussions/1121
https://github.com/djvb5gwz/kdnyzskenz/discussions/1138
https://github.com/tygq5nux/jkgibzxucg/discussions/1122
https://github.com/djvb5gwz/kdnyzskenz/discussions/1139
https://github.com/tygq5nux/jkgibzxucg/discussions/1123
https://github.com/djvb5gwz/kdnyzskenz/discussions/1140
https://github.com/tygq5nux/jkgibzxucg/discussions/1124
https://github.com/djvb5gwz/kdnyzskenz/discussions/1141
https://github.com/tygq5nux/jkgibzxucg/discussions/1125
https://github.com/djvb5gwz/kdnyzskenz/discussions/1142
https://github.com/tygq5nux/jkgibzxucg/discussions/1126
https://github.com/tygq5nux/jkgibzxucg/discussions/1127
https://github.com/djvb5gwz/kdnyzskenz/discussions/1143
https://github.com/djvb5gwz/kdnyzskenz/discussions/1144
https://github.com/tygq5nux/jkgibzxucg/discussions/1128
https://github.com/tygq5nux/jkgibzxucg/discussions/1129
https://github.com/djvb5gwz/kdnyzskenz/discussions/1145
https://github.com/djvb5gwz/kdnyzskenz/discussions/1146
https://github.com/tygq5nux/jkgibzxucg/discussions/1130
https://github.com/djvb5gwz/kdnyzskenz/discussions/1147
https://github.com/tygq5nux/jkgibzxucg/discussions/1131
https://github.com/djvb5gwz/kdnyzskenz/discussions/1148
https://github.com/tygq5nux/jkgibzxucg/discussions/1132
https://github.com/tygq5nux/jkgibzxucg/discussions/1133
https://github.com/djvb5gwz/kdnyzskenz/discussions/1149
https://github.com/tygq5nux/jkgibzxucg/discussions/1134
https://github.com/djvb5gwz/kdnyzskenz/discussions/1150
https://github.com/djvb5gwz/kdnyzskenz/discussions/1151
https://github.com/tygq5nux/jkgibzxucg/discussions/1135
https://github.com/tygq5nux/jkgibzxucg/discussions/1136
https://github.com/tygq5nux/jkgibzxucg/discussions/1137
https://github.com/djvb5gwz/kdnyzskenz/discussions/1153
https://github.com/tygq5nux/jkgibzxucg/discussions/1138
https://github.com/djvb5gwz/kdnyzskenz/discussions/1154
https://github.com/tygq5nux/jkgibzxucg/discussions/1139
https://github.com/djvb5gwz/kdnyzskenz/discussions/1155
https://github.com/tygq5nux/jkgibzxucg/discussions/1140
https://github.com/djvb5gwz/kdnyzskenz/discussions/1156
https://github.com/tygq5nux/jkgibzxucg/discussions/1141
https://github.com/djvb5gwz/kdnyzskenz/discussions/1157
https://github.com/djvb5gwz/kdnyzskenz/discussions/1158
https://github.com/tygq5nux/jkgibzxucg/discussions/1142
https://github.com/tygq5nux/jkgibzxucg/discussions/1143
https://github.com/djvb5gwz/kdnyzskenz/discussions/1159
https://github.com/tygq5nux/jkgibzxucg/discussions/1144
https://github.com/djvb5gwz/kdnyzskenz/discussions/1160
https://github.com/djvb5gwz/kdnyzskenz/discussions/1161
https://github.com/tygq5nux/jkgibzxucg/discussions/1145
https://github.com/djvb5gwz/kdnyzskenz/discussions/1162
https://github.com/tygq5nux/jkgibzxucg/discussions/1146
https://github.com/djvb5gwz/kdnyzskenz/discussions/1163
https://github.com/tygq5nux/jkgibzxucg/discussions/1147
https://github.com/djvb5gwz/kdnyzskenz/discussions/1164
https://github.com/tygq5nux/jkgibzxucg/discussions/1148
https://github.com/djvb5gwz/kdnyzskenz/discussions/1165
https://github.com/tygq5nux/jkgibzxucg/discussions/1149
https://github.com/djvb5gwz/kdnyzskenz/discussions/1166
https://github.com/tygq5nux/jkgibzxucg/discussions/1150
https://github.com/djvb5gwz/kdnyzskenz/discussions/1167
https://github.com/tygq5nux/jkgibzxucg/discussions/1151
https://github.com/djvb5gwz/kdnyzskenz/discussions/1168
https://github.com/tygq5nux/jkgibzxucg/discussions/1152
https://github.com/djvb5gwz/kdnyzskenz/discussions/1169
https://github.com/tygq5nux/jkgibzxucg/discussions/1153
https://github.com/djvb5gwz/kdnyzskenz/discussions/1170
https://github.com/tygq5nux/jkgibzxucg/discussions/1154
https://github.com/djvb5gwz/kdnyzskenz/discussions/1171
https://github.com/tygq5nux/jkgibzxucg/discussions/1155
https://github.com/tygq5nux/jkgibzxucg/discussions/1156
https://github.com/djvb5gwz/kdnyzskenz/discussions/1172
https://github.com/tygq5nux/jkgibzxucg/discussions/1157
https://github.com/djvb5gwz/kdnyzskenz/discussions/1173
https://github.com/tygq5nux/jkgibzxucg/discussions/1158
https://github.com/tygq5nux/jkgibzxucg/discussions/1159
https://github.com/djvb5gwz/kdnyzskenz/discussions/1174
https://github.com/tygq5nux/jkgibzxucg/discussions/1160
https://github.com/djvb5gwz/kdnyzskenz/discussions/1175
https://github.com/tygq5nux/jkgibzxucg/discussions/1161
https://github.com/djvb5gwz/kdnyzskenz/discussions/1176
https://github.com/tygq5nux/jkgibzxucg/discussions/1162
https://github.com/djvb5gwz/kdnyzskenz/discussions/1177
https://github.com/tygq5nux/jkgibzxucg/discussions/1163
https://github.com/djvb5gwz/kdnyzskenz/discussions/1178
https://github.com/tygq5nux/jkgibzxucg/discussions/1164
https://github.com/djvb5gwz/kdnyzskenz/discussions/1179
https://github.com/djvb5gwz/kdnyzskenz/discussions/1180
https://github.com/tygq5nux/jkgibzxucg/discussions/1165
https://github.com/tygq5nux/jkgibzxucg/discussions/1166
https://github.com/djvb5gwz/kdnyzskenz/discussions/1181
https://github.com/djvb5gwz/kdnyzskenz/discussions/1182
https://github.com/tygq5nux/jkgibzxucg/discussions/1167
https://github.com/tygq5nux/jkgibzxucg/discussions/1168
https://github.com/djvb5gwz/kdnyzskenz/discussions/1183
https://github.com/tygq5nux/jkgibzxucg/discussions/1169
https://github.com/djvb5gwz/kdnyzskenz/discussions/1184
https://github.com/djvb5gwz/kdnyzskenz/discussions/1185
https://github.com/tygq5nux/jkgibzxucg/discussions/1170
https://github.com/djvb5gwz/kdnyzskenz/discussions/1186
https://github.com/tygq5nux/jkgibzxucg/discussions/1171
https://github.com/djvb5gwz/kdnyzskenz/discussions/1187
https://github.com/tygq5nux/jkgibzxucg/discussions/1172
https://github.com/djvb5gwz/kdnyzskenz/discussions/1188
https://github.com/tygq5nux/jkgibzxucg/discussions/1173
https://github.com/djvb5gwz/kdnyzskenz/discussions/1189
https://github.com/tygq5nux/jkgibzxucg/discussions/1174
https://github.com/djvb5gwz/kdnyzskenz/discussions/1190
https://github.com/tygq5nux/jkgibzxucg/discussions/1175
https://github.com/tygq5nux/jkgibzxucg/discussions/1176
https://github.com/djvb5gwz/kdnyzskenz/discussions/1191
https://github.com/djvb5gwz/kdnyzskenz/discussions/1192
https://github.com/tygq5nux/jkgibzxucg/discussions/1177
https://github.com/tygq5nux/jkgibzxucg/discussions/1178
https://github.com/djvb5gwz/kdnyzskenz/discussions/1193
https://github.com/djvb5gwz/kdnyzskenz/discussions/1194
https://github.com/tygq5nux/jkgibzxucg/discussions/1179
https://github.com/djvb5gwz/kdnyzskenz/discussions/1195
https://github.com/tygq5nux/jkgibzxucg/discussions/1180
https://github.com/djvb5gwz/kdnyzskenz/discussions/1196
https://github.com/tygq5nux/jkgibzxucg/discussions/1181
https://github.com/djvb5gwz/kdnyzskenz/discussions/1197
https://github.com/tygq5nux/jkgibzxucg/discussions/1182
https://github.com/djvb5gwz/kdnyzskenz/discussions/1198
https://github.com/tygq5nux/jkgibzxucg/discussions/1183
https://github.com/djvb5gwz/kdnyzskenz/discussions/1199
https://github.com/tygq5nux/jkgibzxucg/discussions/1184
https://github.com/djvb5gwz/kdnyzskenz/discussions/1200
https://github.com/tygq5nux/jkgibzxucg/discussions/1185
https://github.com/djvb5gwz/kdnyzskenz/discussions/1201
https://github.com/tygq5nux/jkgibzxucg/discussions/1186
https://github.com/tygq5nux/jkgibzxucg/discussions/1187
https://github.com/djvb5gwz/kdnyzskenz/discussions/1202
https://github.com/tygq5nux/jkgibzxucg/discussions/1188
https://github.com/djvb5gwz/kdnyzskenz/discussions/1203
https://github.com/tygq5nux/jkgibzxucg/discussions/1189
https://github.com/djvb5gwz/kdnyzskenz/discussions/1204
https://github.com/djvb5gwz/kdnyzskenz/discussions/1205
https://github.com/tygq5nux/jkgibzxucg/discussions/1190
https://github.com/djvb5gwz/kdnyzskenz/discussions/1206
https://github.com/tygq5nux/jkgibzxucg/discussions/1191
https://github.com/djvb5gwz/kdnyzskenz/discussions/1207
https://github.com/tygq5nux/jkgibzxucg/discussions/1192
https://github.com/djvb5gwz/kdnyzskenz/discussions/1208
https://github.com/tygq5nux/jkgibzxucg/discussions/1193
https://github.com/djvb5gwz/kdnyzskenz/discussions/1209
https://github.com/tygq5nux/jkgibzxucg/discussions/1194
https://github.com/djvb5gwz/kdnyzskenz/discussions/1210
https://github.com/tygq5nux/jkgibzxucg/discussions/1195
https://github.com/tygq5nux/jkgibzxucg/discussions/1196
https://github.com/djvb5gwz/kdnyzskenz/discussions/1211
https://github.com/djvb5gwz/kdnyzskenz/discussions/1212
https://github.com/tygq5nux/jkgibzxucg/discussions/1197
https://github.com/djvb5gwz/kdnyzskenz/discussions/1213
https://github.com/tygq5nux/jkgibzxucg/discussions/1198
https://github.com/djvb5gwz/kdnyzskenz/discussions/1214
https://github.com/tygq5nux/jkgibzxucg/discussions/1199
https://github.com/djvb5gwz/kdnyzskenz/discussions/1215
https://github.com/tygq5nux/jkgibzxucg/discussions/1200
https://github.com/djvb5gwz/kdnyzskenz/discussions/1216
https://github.com/tygq5nux/jkgibzxucg/discussions/1201
https://github.com/tygq5nux/jkgibzxucg/discussions/1202
https://github.com/djvb5gwz/kdnyzskenz/discussions/1217
https://github.com/djvb5gwz/kdnyzskenz/discussions/1218
https://github.com/tygq5nux/jkgibzxucg/discussions/1203
https://github.com/djvb5gwz/kdnyzskenz/discussions/1219
https://github.com/tygq5nux/jkgibzxucg/discussions/1204
https://github.com/djvb5gwz/kdnyzskenz/discussions/1220
https://github.com/tygq5nux/jkgibzxucg/discussions/1206
https://github.com/djvb5gwz/kdnyzskenz/discussions/1221
https://github.com/djvb5gwz/kdnyzskenz/discussions/1222
https://github.com/tygq5nux/jkgibzxucg/discussions/1207
https://github.com/tygq5nux/jkgibzxucg/discussions/1208
https://github.com/djvb5gwz/kdnyzskenz/discussions/1223
https://github.com/tygq5nux/jkgibzxucg/discussions/1209
https://github.com/djvb5gwz/kdnyzskenz/discussions/1224
https://github.com/tygq5nux/jkgibzxucg/discussions/1210
https://github.com/djvb5gwz/kdnyzskenz/discussions/1225
https://github.com/tygq5nux/jkgibzxucg/discussions/1211
https://github.com/djvb5gwz/kdnyzskenz/discussions/1226
https://github.com/tygq5nux/jkgibzxucg/discussions/1212
https://github.com/djvb5gwz/kdnyzskenz/discussions/1227
https://github.com/tygq5nux/jkgibzxucg/discussions/1213
https://github.com/djvb5gwz/kdnyzskenz/discussions/1228
https://github.com/tygq5nux/jkgibzxucg/discussions/1214
https://github.com/djvb5gwz/kdnyzskenz/discussions/1229
https://github.com/tygq5nux/jkgibzxucg/discussions/1215
https://github.com/djvb5gwz/kdnyzskenz/discussions/1230
https://github.com/tygq5nux/jkgibzxucg/discussions/1216
https://github.com/djvb5gwz/kdnyzskenz/discussions/1231
https://github.com/tygq5nux/jkgibzxucg/discussions/1217
https://github.com/djvb5gwz/kdnyzskenz/discussions/1232
https://github.com/tygq5nux/jkgibzxucg/discussions/1218
https://github.com/djvb5gwz/kdnyzskenz/discussions/1233
https://github.com/tygq5nux/jkgibzxucg/discussions/1219
https://github.com/djvb5gwz/kdnyzskenz/discussions/1234
https://github.com/tygq5nux/jkgibzxucg/discussions/1220
https://github.com/djvb5gwz/kdnyzskenz/discussions/1235
https://github.com/tygq5nux/jkgibzxucg/discussions/1221
https://github.com/djvb5gwz/kdnyzskenz/discussions/1236
https://github.com/tygq5nux/jkgibzxucg/discussions/1222
https://github.com/djvb5gwz/kdnyzskenz/discussions/1237
https://github.com/tygq5nux/jkgibzxucg/discussions/1223
https://github.com/djvb5gwz/kdnyzskenz/discussions/1238
https://github.com/tygq5nux/jkgibzxucg/discussions/1224
https://github.com/djvb5gwz/kdnyzskenz/discussions/1239
https://github.com/tygq5nux/jkgibzxucg/discussions/1225
https://github.com/tygq5nux/jkgibzxucg/discussions/1226
https://github.com/djvb5gwz/kdnyzskenz/discussions/1240
https://github.com/djvb5gwz/kdnyzskenz/discussions/1241
https://github.com/tygq5nux/jkgibzxucg/discussions/1227
https://github.com/djvb5gwz/kdnyzskenz/discussions/1242
https://github.com/tygq5nux/jkgibzxucg/discussions/1228
https://github.com/djvb5gwz/kdnyzskenz/discussions/1243
https://github.com/tygq5nux/jkgibzxucg/discussions/1229
https://github.com/djvb5gwz/kdnyzskenz/discussions/1244
https://github.com/tygq5nux/jkgibzxucg/discussions/1230
https://github.com/djvb5gwz/kdnyzskenz/discussions/1245
https://github.com/tygq5nux/jkgibzxucg/discussions/1231
https://github.com/djvb5gwz/kdnyzskenz/discussions/1246
https://github.com/tygq5nux/jkgibzxucg/discussions/1232
https://github.com/djvb5gwz/kdnyzskenz/discussions/1247
https://github.com/tygq5nux/jkgibzxucg/discussions/1233
https://github.com/djvb5gwz/kdnyzskenz/discussions/1248
https://github.com/tygq5nux/jkgibzxucg/discussions/1234
https://github.com/djvb5gwz/kdnyzskenz/discussions/1249
https://github.com/tygq5nux/jkgibzxucg/discussions/1235
https://github.com/djvb5gwz/kdnyzskenz/discussions/1250
https://github.com/tygq5nux/jkgibzxucg/discussions/1236
https://github.com/djvb5gwz/kdnyzskenz/discussions/1251
https://github.com/tygq5nux/jkgibzxucg/discussions/1237
https://github.com/djvb5gwz/kdnyzskenz/discussions/1252
https://github.com/tygq5nux/jkgibzxucg/discussions/1238
https://github.com/djvb5gwz/kdnyzskenz/discussions/1253
https://github.com/tygq5nux/jkgibzxucg/discussions/1239
https://github.com/djvb5gwz/kdnyzskenz/discussions/1254
https://github.com/tygq5nux/jkgibzxucg/discussions/1240
https://github.com/djvb5gwz/kdnyzskenz/discussions/1255
https://github.com/djvb5gwz/kdnyzskenz/discussions/1256
https://github.com/tygq5nux/jkgibzxucg/discussions/1241
https://github.com/tygq5nux/jkgibzxucg/discussions/1242
https://github.com/djvb5gwz/kdnyzskenz/discussions/1257
https://github.com/tygq5nux/jkgibzxucg/discussions/1243
https://github.com/djvb5gwz/kdnyzskenz/discussions/1258
https://github.com/tygq5nux/jkgibzxucg/discussions/1244
https://github.com/djvb5gwz/kdnyzskenz/discussions/1259
https://github.com/tygq5nux/jkgibzxucg/discussions/1245
https://github.com/djvb5gwz/kdnyzskenz/discussions/1260
https://github.com/tygq5nux/jkgibzxucg/discussions/1246
https://github.com/djvb5gwz/kdnyzskenz/discussions/1261
https://github.com/tygq5nux/jkgibzxucg/discussions/1247
https://github.com/djvb5gwz/kdnyzskenz/discussions/1262
https://github.com/tygq5nux/jkgibzxucg/discussions/1248
https://github.com/djvb5gwz/kdnyzskenz/discussions/1263
https://github.com/tygq5nux/jkgibzxucg/discussions/1249
https://github.com/djvb5gwz/kdnyzskenz/discussions/1264
https://github.com/tygq5nux/jkgibzxucg/discussions/1250
https://github.com/tygq5nux/jkgibzxucg/discussions/1251
https://github.com/djvb5gwz/kdnyzskenz/discussions/1265
https://github.com/djvb5gwz/kdnyzskenz/discussions/1266
https://github.com/tygq5nux/jkgibzxucg/discussions/1252
https://github.com/tygq5nux/jkgibzxucg/discussions/1253
https://github.com/djvb5gwz/kdnyzskenz/discussions/1267
https://github.com/tygq5nux/jkgibzxucg/discussions/1254
https://github.com/djvb5gwz/kdnyzskenz/discussions/1268
https://github.com/tygq5nux/jkgibzxucg/discussions/1255
https://github.com/djvb5gwz/kdnyzskenz/discussions/1269
https://github.com/djvb5gwz/kdnyzskenz/discussions/1270
https://github.com/tygq5nux/jkgibzxucg/discussions/1256
https://github.com/djvb5gwz/kdnyzskenz/discussions/1271
https://github.com/tygq5nux/jkgibzxucg/discussions/1257
https://github.com/djvb5gwz/kdnyzskenz/discussions/1272
https://github.com/tygq5nux/jkgibzxucg/discussions/1258
https://github.com/djvb5gwz/kdnyzskenz/discussions/1273
https://github.com/tygq5nux/jkgibzxucg/discussions/1259
https://github.com/djvb5gwz/kdnyzskenz/discussions/1274
https://github.com/tygq5nux/jkgibzxucg/discussions/1260
https://github.com/djvb5gwz/kdnyzskenz/discussions/1275
https://github.com/tygq5nux/jkgibzxucg/discussions/1261
https://github.com/djvb5gwz/kdnyzskenz/discussions/1276
https://github.com/tygq5nux/jkgibzxucg/discussions/1262
https://github.com/djvb5gwz/kdnyzskenz/discussions/1277
https://github.com/tygq5nux/jkgibzxucg/discussions/1263
https://github.com/djvb5gwz/kdnyzskenz/discussions/1278
https://github.com/tygq5nux/jkgibzxucg/discussions/1264
https://github.com/djvb5gwz/kdnyzskenz/discussions/1279
https://github.com/tygq5nux/jkgibzxucg/discussions/1265
https://github.com/djvb5gwz/kdnyzskenz/discussions/1280
https://github.com/djvb5gwz/kdnyzskenz/discussions/1281
https://github.com/tygq5nux/jkgibzxucg/discussions/1266
https://github.com/djvb5gwz/kdnyzskenz/discussions/1282
https://github.com/tygq5nux/jkgibzxucg/discussions/1267
https://github.com/tygq5nux/jkgibzxucg/discussions/1268
https://github.com/djvb5gwz/kdnyzskenz/discussions/1283
https://github.com/djvb5gwz/kdnyzskenz/discussions/1284
https://github.com/tygq5nux/jkgibzxucg/discussions/1269
https://github.com/djvb5gwz/kdnyzskenz/discussions/1285
https://github.com/tygq5nux/jkgibzxucg/discussions/1270
https://github.com/tygq5nux/jkgibzxucg/discussions/1271
https://github.com/djvb5gwz/kdnyzskenz/discussions/1286
https://github.com/tygq5nux/jkgibzxucg/discussions/1272
https://github.com/djvb5gwz/kdnyzskenz/discussions/1287
https://github.com/djvb5gwz/kdnyzskenz/discussions/1288
https://github.com/tygq5nux/jkgibzxucg/discussions/1273
https://github.com/djvb5gwz/kdnyzskenz/discussions/1289
https://github.com/djvb5gwz/kdnyzskenz/discussions/1290
https://github.com/tygq5nux/jkgibzxucg/discussions/1274
https://github.com/djvb5gwz/kdnyzskenz/discussions/1291
https://github.com/tygq5nux/jkgibzxucg/discussions/1275
https://github.com/djvb5gwz/kdnyzskenz/discussions/1292
https://github.com/tygq5nux/jkgibzxucg/discussions/1276
https://github.com/djvb5gwz/kdnyzskenz/discussions/1293
https://github.com/tygq5nux/jkgibzxucg/discussions/1277
https://github.com/djvb5gwz/kdnyzskenz/discussions/1294
https://github.com/tygq5nux/jkgibzxucg/discussions/1278
https://github.com/tygq5nux/jkgibzxucg/discussions/1279
https://github.com/djvb5gwz/kdnyzskenz/discussions/1295
https://github.com/tygq5nux/jkgibzxucg/discussions/1280
 

六、全文索引#

  全文索引是一种特殊类型的索引,它查找的是文本中的关键词,而不是直接比较索引中的值。全文搜索和其他几类索引的匹配方式完全不一样。它有许多需要注意的细节,如停用词、词干和复数、布尔搜索等。全文索引更类似于搜索引擎做的事情,而不是简单的WHERE条件匹配。

 

七、其他索引类型#

  TokuDB使用形树索引(fractal tree index),这是一类较新开发的数据结构,既有B-Tree的很多优点,也避免了B-Tree的一些缺点。

  还有InnoDB的聚簇索引、覆盖索引等。

      ScaleDB使用Patricia tries。

      其他存储引擎技术如InfiniDB和Infobright则使用了一些特殊的数据结构来优化某些特殊的查询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/142810.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

mysql 的 索引

「深度学习福利」大神带你进阶工程师&#xff0c;立即查看>>> 1 什么是索引&#xff1f; 索引是数据库管理系统中一个排序的数据结构&#xff0c;以协助快速查询、更新数据库表中数据。 索引的实现 通常使用B树及其变种B树。 索引相当于字典的目录&#xff0c;作用…

Mysql高性能索引

一、索引是什么 二、索引的底层实现原理 三、InnoDB的存储结构是怎样的&#xff1f; 四、InnoDB索引和MyIsam索引对比 五、Mysql为什么会选错索引 六、唯一索引和普通索引的区别 导读:本博文讲解了索引是什么和索引的底层原理&#xff0c;提到了 BTREE和 BTREE hash底层…

MySQL:索引

一、索引的常见模型 索引的出现是为了提高数据查询的效率。实现索引的方式有很多种&#xff0c;比较常见的数据结构有&#xff1a;哈希表、有序数组和搜索树。 索引是在存储引擎层实现的&#xff0c;不同存储引擎索引工作方式不同。 1.1 哈希表 哈希表&#xff1a;键值存储…

【MySQL】MySQL的索引

目录 索引1.1 概念1.2 作用1.3 使用场景1.4 使用1.5 索引最常用的数据结构 索引 1.1 概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引&#xff0c; 并指定索引的类型&#xff0c;各类索引有各自的数据结构实现。 …

MySQL 的索引

文章目录 索引简介普通索引主键索引唯一索引全文索引外键索引复合索引复合索引生效的几种方式复合索引会失效的情况 索引的优点高性能的索引策略独立的列前缀索引和索引的选择性复合索引选择合适的索引列顺序聚簇索引索引的 Btree 结构聚簇索引和非聚簇索引的区别聚簇索引的优点…

什么是 MySQL 索引?

什么是索引&#xff1f; 假设我们有一张数据表 employee(员工表)&#xff0c;该表有三个字段&#xff08;列&#xff09;,分别是name、age 和address。假设表employee有上万行数据(这公司还真大&#xff09;&#xff0c;现在需要从这个表中查找出所有名字是‘ZhangSan’的雇员信…

MySql知识体系总结(2021版)

存储引擎负责在MySQL中存储数据、提取数据、开启一个事务等等。存储引擎通过API与上层进行通信&#xff0c;这些API屏蔽了不同存储引擎之间的差异&#xff0c;使得这些差异对上层查询过程透明。存储引擎不会去解析SQL。 二、对比InnoDB与MyISAM 1、 存储结构 MyISAM&#xff…

一文搞懂MySQL索引所有知识点(建议收藏)

Mysql索引 索引介绍 索引是什么 官方介绍索引是帮助MySQL高效获取数据的数据结构。更通俗的说&#xff0c;数据库索引好比是一本书前面的目录&#xff0c;能加快数据库的查询速度。 一般来说索引本身也很大&#xff0c;不可能全部存储在内存中&#xff0c;因此索引往往是存储…

Doris安装

Apache Doris 由百度大数据部研发&#xff08;之前叫百度 Palo&#xff0c;2018 年贡献到 Apache 社区后&#xff0c; 更名为 Doris &#xff09;&#xff0c;在百度内部&#xff0c;有超过 200 个产品线在使用&#xff0c;部署机器超过 1000 台&#xff0c;单一 业务最大可达…

深入理解hashmap底层实现原理

目录 总体介绍 HashMap元素的存储 在hashmap中添加元素 HashMap的扩容机制 HashMap的线程安全性 1.添加和删除元素时存在不安全性 2.进行扩容操作时存在不安全性 3.哈希冲突存在不安全性 4.线程之间的不可见性导致安全问题 总体介绍 HashMap是我们用于元素映射使用频率最…

RK3588平台开发系列讲解(项目篇)YOLOv5部署测试

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、YOLOv5环境安装二、YOLOv5简单使用2.1、获取预训练权重文2.2、YOLOv5简单测试2.3、转换为rknn模型2.4、部署到 RK 板卡三、airockchip/yolov5简单测试3.1、转换成rknn模型并部署到板卡沉淀、分享、成长,让自己和他…

HTML编码问题导致的乱码

今天一个学弟问了一个问题&#xff0c;它写的HTML代码打开显示的是乱码。 然后就给我发来了代码。 就一个HTML文件和一个文件夹&#xff0c;打开一看&#xff0c;很简单的代码。 <!DOCTYPE html> <html lang""> <head><meta charset"UTF…

URL和HTML编码

URL和HTML编码 在呈现HTML页面时,有时候需要显示一些特殊的字符,例如”<”和”&”,因为它们是HTML专用字符,因此需要一些技巧.例如要想显示AT&T,在代码中必须写成AT&amp;T。同样URL中的,&,/等字符也为专用字符,所以如果需要在URL参数中使用它们,也必须对这些…

简单的Html编码转换工具

一、前言 因为项目经常会碰Html转码&#xff0c;特别是返回的xml报文&#xff0c;总是显示&# 十六进制的编码&#xff0c;查中文的时候特别不方便&#xff0c;所以就做了一个简单的C#桌面应用程序。 二、涉及软件 Visual Studio 2019 Preview 三、使用框架 .NET Fram…

怎么设置html代码中的编码格式,html怎么设置编码

在html中&#xff0c;可以使用meta标签来设置编码&#xff0c;语法格式“”。meta标签提供了HTML文档的元数据&#xff0c;元数据不会显示在客户端&#xff0c;但是会被浏览器解析&#xff1b;而charset属性用于定义文档的字符编码。 本教程操作环境&#xff1a;windows7系统、…

Unicode编码对应的HTML 、JS 、CSS码

平时写代码很少用到HTML的特殊字符&#xff0c;最常用的可能是 了&#xff0c;但有时在移动端为了节省时间&#xff0c;可能会用这些字符实现某种特殊效果&#xff0c;现整理如下&#xff1a; 使用方法&#xff1a; 这些字符属于unicode字符集&#xff0c;所以&#xff0c;你…

HTML之编码规范

HTML之编码规范 img 标签要写 alt 属性单标签不要写闭合标签自定义属性要以 data-开头td 要在 tr 里面&#xff0c;li 要在 ul/ol 里面ul/ol 的直接子元素只能是 lisection 里面要有标题标签使用 section 标签增强 SEO行内元素里面不可使用块级元素每个页面要写要用 table 布局…

【HTML 教程】HTML 字符编码

作者 | 阮一峰 简介 网页包含了大量的文字&#xff0c;浏览器必须知道这些文字的编码方法&#xff0c;才能把文字还原出来。 一般情况下&#xff0c;服务器向浏览器发送 HTML 网页文件时&#xff0c;会通过 HTTP 头信息&#xff0c;声明网页的编码方式。 Content-Type: text/ht…

HTML编码规范

本篇文章是基于王叨叨大佬师父维护的文档梳理的&#xff0c;有兴趣可以去看一下原文HTML编码规范。 1. 缩进与换行 【建议】 使用 2 个空格作为一个缩进层级&#xff0c;不允许使用tab字符 解释&#xff1a; ​ 具体项目&#xff0c;可以使用2个空格&#xff0c;也可以使用…

HTML 编码(字符集)总结,你了解了多少

Web 浏览器必须知道要使用哪个字符集&#xff0c;才能正确显示 HTML 页面。 文章目录 Web 浏览器必须知道要使用哪个字符集&#xff0c;才能正确显示 HTML 页面。前言一、HTML charset 属性二、字符集之间的差异ASCII 字符集ANSI 字符集 (Windows-1252)ISO-8859-1 字符集UTF-8 …