精华内容
下载资源
问答
  • mysql 索引详解

    2020-02-24 12:55:24
    所有的MySql列类型(字段类型)都可以被索引,也就是可以给任意字段建立索引。 全文检索字段进行搜索优化。 索引缺点: 创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加。 当对表中的...

    索引优点:

    • 可以加快数据的检索速度,提高查询速度。
    • 所有的MySql列类型(字段类型)都可以被索引,也就是可以给任意字段建立索引。
    • 全文检索字段进行搜索优化。

    索引缺点:

    •  创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加。
    • 当对表中的数据进行增加、删除、修改的时候,索引也需要动态维护,降低了数据的维护速度。
    • 索引也需要占用物理存储空间(数据库目录:/var/lib/mysql)。
    • 我们知道数据表中的数据也会有最大上线设置的,如果有大量的索引,索引文件可能会比数据文件更快达到上线值

     

    索引的分类

    • 普通索引:加速查找
    • 唯一索引:加速查找+约束 (唯一)
    • 主键索引:加速查找+约束(不为空且唯一)
    • 复合索引:primary key(id,name):联合主键索引,unique(id,name):联合唯一索引,index(id,name):联合普通索引

     

    普通索引(index)

    使用规则:

    1. 一个表可以有多个index字段
    2. 字段的值可以重复,也可以为null,字段值无约束
    3. 经常作为查询条件的字段设置为index字段
    4. index字段的key标志null
    创建普通索引(有三种方法)
    方法1:创建表时创建索引index
    create table student(
        id int,
        name varchar(25),
        score float(5,2),
        index(name),              # 创建name索引
        index(score)              # 创建score索引
    );
    方法2:创建表后创建索引index:索引名一般和字段名一样,只要自己能认出就行,可以随便起名。
    create index 索引名称 on 表名(字段名称)
    create index name on student(name)
    方法3:创建表后创建索引index
    alter table 表名称 add index 索引名称(字段名称)
    alter table student add index nameIndex(name)
    查看普通索引:key一列就是索引的列
    desc 表名
    desc student
    
    show index from 表名
    show index from student
    删除普通索引:删除普通索引只能一个一个删除
    drop index 索引名称 on 表名
    drop index nameIndex on student

    唯一索引(unique)

    使用规则:

    1. 一个表可以有多个unique字段
    2. unique字段的值不允许重复,可以为null值
    3. unique的课标志位UNI
    创建唯一索引(基本等同index创建)
    方法1:创建表时创建索引
    create table student(
        id int,
        name varchar(25),
        score float(5,2), 
        unique(name),
        unique(score)
    );   
    方法2:创建表后创建索引:索引名一般和字段名一样,只要自己能认出就行,可以随便起名
     create unique index 索引名 on 表名(字段名);
    方法3:创建表后创建索引
    alter table student add unique name_index(name);

    复合索引

    方法1:创建表时创建索引

    create table student(
        id int,
        name varchar(25),
        score float(5,2),
        index(name),              # 创建name索引
        index(score)              # 创建score索引
    );

    方法2:创建表后创建索引

    create index 索引名称 on table(字段,字段)
    create index index_name_score on student(name,score)

    方法3:创建表后创建索引

    alter table 表名 add index_name_score(name,score)

     

    展开全文
  • 所有的MySql列类型(字段类型)都可以被索引,也就是可以给任意字段建立索引。 全文检索字段进行搜索优化。 索引缺点: 创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加。 当对表中...

    索引的原理

    索引的优点和缺点和使用原则

    索引优点:

    • 可以加快数据的检索速度,提高查询速度。
    • 所有的MySql列类型(字段类型)都可以被索引,也就是可以给任意字段建立索引。
    • 全文检索字段进行搜索优化。

    索引缺点:

    •  创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加。
    • 当对表中的数据进行增加、删除、修改的时候,索引也需要动态维护,降低了数据的维护速度。
    • 索引也需要占用物理存储空间(数据库目录:/var/lib/mysql)。
    • 我们知道数据表中的数据也会有最大上线设置的,如果有大量的索引,索引文件可能会比数据文件更快达到上线值。

    使用原则:

    • 索引不是越多越好,并不是每个字段都设置索引就好,而是需要自己合理的使用。
    • 对经常更新的表就避免对其进行过多的索引,对经常用于查询的字段应该创建索引,不要对经常变动的数据加索引。
    • 数据量小的表最好不要使用索引,因为数据较少,可能查询全部数据花费的时间比遍历索引的时间还要短,索引就可能不会产生优化效果。
    • 在一同值少的列上(字段上)不要建立索引,比如在学生表的"性别"字段上只有男,女两个不同值。相反的,在一个字段上不同值较多可以建立索引。

    什么时候添加索引:

    • 在 where、order by 子句中经常使用的字段。
    • 字段的值是多个(例如性别字段则不适合)。
    • 字段内容不是经常变化的,经常变化的字段,添加索引反而降低性能。
    • 不宜过多添加索引,每添加一条索引都会占用磁盘空间。

    索引的分类

    • 普通索引:加速查找
    • 唯一索引:加速查找+约束 (唯一)
    • 主键索引:加速查找+约束(不为空且唯一)
    • 外键索引:  
    • 组合索引:primary key(id,name):联合主键索引,unique(id,name):联合唯一索引,index(id,name):联合普通索引
    • 全文索引:用于搜索很长一篇文章的时候,效果最好。(full text)
    • 空间索引:了解就好,几乎不用。(spatial)

    普通索引(index)

    使用规则
    1.一个表中可以有多个index字段
    2.字段的值可以有重复,也可以为null值。字段值无约束
    3.经常把做查询条件的字段设置为index字段
    4.index字段的key标志为:mul
    
    创建普通索引(有三种方法) 方法1:创建表时创建索引index
    create table student( id int, name varchar(25), score float(5,2), index(name), # 创建name索引 index(score) # 创建score索引 ); 方法2:创建表后创建索引index:索引名一般和字段名一样,只要自己能认出就行,可以随便起名。 mysql> create index 索引名 on 表名(字段名) mysql> create index name on student(name); 方法3:创建表后创建索引index mysql> alter table 表名 add index 索引名(字段名); mysql> alter table student add index(name); mysql> alter table student add index name6(name);
    查看普通索引:key一列就是索引的列,我们会发现在name和score有值MUL。 mysql
    > desc 表名; mysql> desc student; # Key标志为:MUL mysql> show index from 表名; # Key_name值为索引名 mysql> show index from student\G; # 如果字段名过多,就添加一个\G。
    删除普通索引:删除普通索引只能一个一个删除 mysql
    > drop index 索引名 on 表名; mysql> drop index name6 on student;

    唯一索引(unique)

    使用规则
    1.一个表中可以有多个unique字段
    2.unique字段的值不允许重复,可以为空值null
    3.unique的key标志是UNI
    
    创建唯一索引(基本等同index创建) 方法1:创建表时创建索引
    create table student( id int, name varchar(25), score float(5,2), unique(name), unique(score) ); 方法2:创建表后创建索引:索引名一般和字段名一样,只要自己能认出就行,可以随便起名。 mysql> create unique index 索引名 on 表名(字段名); 方法3:创建表后创建索引 mysql> alter table student add unique(name); mysql> alter table student add unique name6(name); mysql> alter table student add unique index(name); mysql> alter table student add unique index name6(name);
    查看唯一索引 mysql
    > desc 表名; mysql> show index from 表名;
    删除唯一索引 mysql
    > drop index 索引名 on 表名;

    主键索引(primary key)

    外键索引(foreign key)

    全文索引(fulltext)

    使用须知
    1.在MySQL5.6以下,只有MyISAM引擎表支持全文检索。在MySQL5.6以上Innodb引擎表也提供支持全文检索。
    2.在MySQL5.6以下,目前只支持英文字符的全文搜索,不支持中文全文索引,原因很简单:与英文不同,中文的文字是连着一起写的,中间没有MySQL能找到分词的地方。
    3.相应字段建立FULLTEXT索引,只能在CHAR、VARCHAR、TEXT类型字段上使用全文索引。
    4.预设搜寻是不分大小写,若要分大小写,columne 的 character set要从utf8改成utf8_bin。
    5.MATCH(title, content)里的字段必须和FULLTEXT(title, content)里的字段一模一样。
    6.全文索引,就是在一堆文字中,通过其中的某个关键字等,就能找到该字段所属的记录行。
    
    创建全文索引 方法1:创建表时创建全文索引
    create table article ( id int auto_increment not null primary key, title varchar(200), body text, fulltext(title, body) ) engine=myisam; 方法2:创建表后创建全文索引 mysql> alter table 表名称 add fulltext index 索引名称 (字段名1,字段名2) mysql> alter table article add fulltext index(body); mysql> alter table article add fulltext index(title, body); 方法3:创建表后创建全文索引 mysql> create fulltext index 索引名称 on 表名称(字段名1,字段名2)
    使用全文索引 mysql
    > select * from 表名称 WHERE MATCH(字段名) AGAINST('条件字符串1*') mysql> select * from 表名称 WHERE MATCH(字段名) AGAINST('条件字符串1' IN BOOLEAN MODE) mysql> select * from article where match(title) against('中华日报') ; mysql> select * from article where match(title,body) against('杜月笙');
    删除全文索引 mysql
    > drop index 索引名称 on 表名称;
    重建索引:在数据库运行了较长时间后,索引都有损坏的可能 mysql
    > repair table 表名称 quick;
    全文索引变量值查询 mysql
    > show variables like 'ft%';

     

     

     

     

    转载于:https://www.cnblogs.com/liuhaidon/p/11532524.html

    展开全文
  • 所有的mysql字段类型都可以索引,也就是可以给任意字段设置索引 加快查询速度 缺点: 创建索引和维护索引要耗费时间,且数据量越大,消耗的时间就越多 索引也要占用空间,如果我们又大量索引索引文件会比数据...

    什么是索引:

    利用关键字,记录部分数据(某个字段、某些字段、某个字段的一部分),建立与记录位置的对应关系,就是索引。

    索引的优缺点和使用基本原则:

    优点:

    1. 所有的mysql字段类型都可以索引,也就是可以给任意字段设置索引
    2. 加快查询速度

    缺点:

    1. 创建索引和维护索引要耗费时间,且数据量越大,消耗的时间就越多
    2. 索引也要占用空间,如果我们又大量索引,索引文件会比数据文件更快到达数据容量的上限值
    3. 对表中的数据进行增删改操作时,索引也要进行动态维护,降低了数据的处理速度

    使用基本原则:

    1. 对经常更新的表避免使用过多的索引,只对经常进行查询的字段进行索引
    2. 数据量小的表不要使用索引,数据量小,可能查询全部数据花费的时间会比遍历索引的时间还要短,索引起不到优化效果
    3. 在一个相同值比较多的列上不要建立索引,如性别字段只要两个值;在值的差异化比较大的字段上建立索引,如ID

    索引的分类:

    索引是存储在存储引擎中的,不同的存储引擎对索引的支持也不完全一样,这里可以参考:mysql存储引擎

    我们这里将索引分为:单列索引(普通索引、唯一索引、主键索引)、组合索引、全文索引、空间索引。

    单列索引:

    一个索引只包含单个列,但一个表中可以包含多个单列索引。

    普通索引(index):  mysql的基本索引类型,允许在定义索引的列中插入重复值和空值。

    create index [索引名] on [表名]([列名] [(length(可以不指定))])
    # 或
    alter table [表名] add index [索引名]([列名])
    
    # 也可以在建表时指定索引
    create table [表名](
        id int not null,
        name varchar(10) not null,
        index [索引名] ([列名](length))
    )

    如果是char、varchar类型,length长度可以小于字段的实际长度,也可以不指定;如果是BLOB、TEXT类型,必须指定length

    唯一索引(unique index):  索引列的值必须唯一的,但允许存在空值。

    创建唯一索引与普通索引基本相同,普通索引是index, 唯一索引为unique index

    create unique index [索引名] on [表名]([列名] [(length(可以不指定))])
    # 或
    alter table [表名] add unique index [索引名]([列名])
    
    # 也可以在建表时指定索引
    create table [表名](
        id int not null,
        name varchar(10) not null,
        unique [索引名] ([列名](length))
    )

    主键索引(primary key): 特殊的唯一索引,不允许有空值。主键索引可以不指定索引名,因为一个表中只能有一个主键索引,但可以是多个列组成一个关联主键。

    
    alter table [表名] add primary key ([列名])
    

    组合索引(index):

    在表中多个字段组合上创建索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用。创建一个组合索引实际上是创建了多个普通索引。

    create index [indexName] on [tableName]([column1, column2, column3])
    # 或
    alter table [tableName] add index [indexName]([column1, column2, column3])
    
    # 也可以在建表时指定索引
    create table [表名](
        id int not null,
        name varchar(10) not null,
        index [索引名] ([column1, column2, column3])
    )

    如上面创建的组合索引,实际上是创建了三个索引:column1, column1、column2, column1、column2、column3 。组合索引遵从最左前缀,利用索引中最左边的列集来进行匹配,这样的列集称为最左前缀。如在上面建立的组合索引中,如果在查询中使用了column1、(column1,column2)、(column1,,column2,column3)中的一个 作为查询条件一般就会使用索引。

    使用组合索引需要注意:选择合适的 索引列顺序 很重要, 索引列顺序意味着索引首先按照最左列进行排序,其次是第二列,等等。对于索引列顺序有一个经验法则----- 将选择性最高的列放到索引最前列。但这并不适用于所有场景,还要根据具体场景进行分析和创建索引。

    全文索引(fulltext index):

    全文索引,是MyISAM引擎上才能使用,但是在mysql5.6及之后版本,InnoDB引擎也支持全文索引。全文索引只能在char、varchar、text字段上使用。

    全文索引是指在一堆的文字中,通过使用某个关键字进行搜索字段所属的记录行,这里有点类似于es中的分词、模糊查询。但是mysql的全文索引对文本字段的搜索,只能搜索一些生僻的关键词进行搜索,一些常用的关键词可能不会搜索到结果。

    使用全文索引需要借助MATCH函数:

    select * from work_order where MATCH(info) AGAINS('workOrder') ;

    空间索引(spatial index):

    空间索引是对空间数据类型的字段建立索引,mysql的空间类型字段有:GEOMETRY、POINT、LINESTRING、POLYGON。在创建空间索引时,使用SPATIAL关键字,且存储引擎为MyISAM,空间索引的列必须非空。

    覆盖索引:

    覆盖索引并不特指哪一种索引形式,一个索引在一个查询中是覆盖索引,可能在另一个查询中就不是覆盖索引了。

    覆盖索引是指:一个索引包含要查询的字段的值,则称该索引为覆盖索引。也就是mysql可以使用索引来直接获取列的数据,不需要再读取行数据。这样就可以极大的提高查询的性能。

    并不是所有的索引都能成为覆盖索引,只有B-Tree索引可以做覆盖索引。如果是一次覆盖索引查询,EXPLAIN的Extra列的值为:Using index 。

    使用索引扫描排序:

    mysql有两种方式可以生成有序的结果:通过排序操作;按索引顺序扫描。如果EXPLAIN的type值为index,则说明mysql使用了索引扫描做排序。

    设计索引时,尽可能的让索引既能用于查找,又能用于排序。

    要使索引能有用于排序,需要索引列的顺序和order by 子句的顺序完全一致,且所有列的排序方向(asc/desc)都一样。如果查询需要关联多张表,则只有当order by 子句引用的字段全部为第一张表时,才能使用索引做排序。order by子句,同样需要满足索引的最左前缀要求,否则无法使用索引排序。

    查看一张表的索引:

    show index from table_name;

    哪些查询不会使用索引:

    1. 当查询语句的条件中有or关键字时,除非or两端的条件都存在可以使用的索引,否则该查询不会使用索引
    2. 使用like模糊查询索引列时,'info%' 会使用索引,但是'%info' 和 '%info%' 不会使用索引,‘_’也一样
    3. 对于符合索引,只有遵循做原则才会使用索引,否则不适用索引
    4. 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引。如 name = 111 不使用索引,name = '111' 使用索引。

    5. 如果mysql估计使用全表扫描要比使用索引快,则不使用索引。(这种情况极少发生)

    如何查看索引使用的情况:

    show status like 'Handler_read%';

    注意:
    handler_read_key:这个值越高越好,越高表示使用索引查询到的次数。

    handler_read_rnd_next:这个值越高,说明查询低效。

    展开全文
  • varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...
  • 对varchar类型字段建立索引,不需要指定索引长度,这样索引区分度最好。 C .业务上具有唯一特性的字段(含组合字段),必须指定唯一索引。 D .建复合索引时,一般选择区分度高的字段放在最左列。 多选 13....
  • MySQL命令大全

    2018-01-15 11:19:17
    命令:create table <表名> ( <字段名> <类型> [,..<字段名n> <类型n>]); mysql> create table MyClass( > id int(4) not null primary key auto_increment, > name char(20) not null, > sex int(4) not null ...
  • MYSQL常用命令大全

    2011-05-30 13:31:24
    命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]); mysql> create table MyClass( > id int(4) not null primary key auto_increment, > name char(20) not null, > sex int(4) not null ...
  • 2009达内SQL学习笔记

    2010-02-10 19:46:58
    所有的聚合函数都可以使用。如果指定列名,则DISTINCT只能用于COUNT(列名),DISTINCT不能用于COUNT(*)。 如:Select Distinct name From s_dept; Select Distinct dept_id,title From s_emp; 文本处理: TRIM()/...
  • |字段名| 字段类型| 是否可为空| 备注 |:------:|:------:|:------:|:------:| | Id| Int(11) | 否| 主键 |Modify| Datetime| 是| 修改时间 |Display| Int | 否| 是否被删除 |Uid| Int | 否| 用户id |Qid| Int | ...
  • SQL语法大全

    2014-03-30 11:00:11
    CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… ) 例:CREATE TABLE tab01(name varchar(50),datetime default now()) DROP TABLE 数据表名称 (永久性删除一个数据表) 4. 记录集对象的方法:...
  • 3.2.2 索引扫描类型 68 3.2.3 索引唯一扫描 71 3.2.4 索引范围扫描 72 3.2.5 索引全扫描 74 3.2.6 索引跳跃扫描 77 3.2.7 索引快速全扫描 79 3.3 联结方法 80 3.3.1 嵌套循环联结 81 3.3.2 排序-合并联结 ...
  • 3.2.2 索引扫描类型 68 3.2.3 索引唯一扫描 71 3.2.4 索引范围扫描 72 3.2.5 索引全扫描 74 3.2.6 索引跳跃扫描 77 3.2.7 索引快速全扫描 79 3.3 联结方法 80 3.3.1 嵌套循环联结 81 3.3.2 排序-合并联结 ...
  • 可以任意类型。 10.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m [Page] 答: int Num = this.TextBox1.Text.ToString() ; int Sum = 0 ; for (int i = 0 ; i ; i++) { if((i%2) == ...
  • 4.4.3 实体中出现的所有实体类型都必须不同 106 4.4.4 第一范式所避免的不规则编程 106 4.4.5 当前设计不符合第一范式的线索 110 4.5 属性间的关系 111 4.5.1 第二范式 111 4.5.2 第三范式 116 4.5.3 Boyce-...
  • 修改原知识点默认文档只能为“Word”文件为支持任意类型文件功能 新增知识分类体系分类搜索功能 增加全文搜索索引压缩功能 *感谢muenennpl、Steven等用户和网友的建议及反馈!我们将以不断地进行软件地开发和完善...
  • 修改原知识点默认文档只能为“Word”文件为支持任意类型文件功能 新增知识分类体系分类搜索功能 增加全文搜索索引压缩功能 *感谢muenennpl、Steven等用户和网友的建议及反馈!我们将以不断地进行软件地开发和完善...
  • 修改原知识点默认文档只能为“Word”文件为支持任意类型文件功能 新增知识分类体系分类搜索功能 增加全文搜索索引压缩功能 *感谢muenennpl、Steven等用户和网友的建议及反馈!我们将以不断地进行软件地开发和完善...
  • 千里马酒店前台管理系统V7使用手册

    热门讨论 2011-06-16 14:09:38
    穿透技术可以从房态图执行预订、开房、入帐、结帐等相关操作,也可以从工作视图或报表穿透到对应的客单、帐户,从帐户明细穿透到外围收银点的明细帐单,真正体现出千里马V7.2前后台一体化的特点。 中间的业务逻辑...
  • Excel VBA实用技巧大全 附书源码

    热门讨论 2010-10-08 18:59:24
    目录 01001获取Excel版本 01002获取Excel的安装路径 01003获取当前用户名称 ...01005获取当前操作系统的名称和版本号 01006获取启动Excel的路径 01007获取打开Excel文件...05015制作能够选择任意图表类型的图表 05016制作...
  • 只要代码或模块中未用到“不支持静态编译”的支持库、COM/OCX等,都可以静态编译。以前编译好的模块(.ec)甚至不需要重新编译即可直接支持静态编译。  支持库开发框架调整是扩展性调整,比较好的做到了向前向后兼容...
  • (31) 算法一般都可以用哪几种控制结构组合而成(D) 注:P3 A. 循环、分支、递归 B. 顺序、循环、嵌套 C. 循环、递归、选择 D. 顺序、选择、循环 (32) 数据的存储结构是指(B) 注:P13,要牢记 A. 数据所占的存储空间量...
  • MySQLDBA运维笔记.pdf

    2019-11-04 15:53:17
    mysql 总结........................................................................................................................................6 1.1 数据库的种类.......................................
  • (内有最新习题和ppt教程) ...(40) 将E-R图转换到关系模式时,实体与联系都可以表示成______。(B) A. 属性 B. 关系 C. 键 D. 域 (41) 在下列选项中,哪个不是一个算法一般应该具有的基本特征______。(C)...
  • asp.net知识库

    2015-06-18 08:45:45
    可按任意字段排序的分页存储过程(不用临时表的方法,不看全文会后悔) 常用sql存储过程集锦 存储过程中实现类似split功能(charindex) 通过查询系统表得到纵向的表结构 将数据库表中的数据生成Insert脚本的存储过程!!! ...
  • 说明: 指定一个字符串值, 设置 TIME 数据类型的默认值, 该数据类型包含 HOUR, MINUTE 和 SECOND 这几个日期时间字段。 语法: TIME '09:26:50' (将值存储为 7 个字节)。 默认值: 从 NLS_TERRITORY 中获得 nls_time...
  • 正则表达式

    2014-12-03 14:51:39
    但我们还没有一种方法可以用来描述具有任意多数位的数字或者是一个 字符串.这个串由三个字符以及跟随在字母之后的一位数字构成.这些复杂的模式使用的正则表达式语法指定了该表达式中每个元素要重复出现的次数. ...
  • CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 命令大全 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
    6.9 秘诀:移动带边界的视图到任意位置 179 6.10 秘诀:视图变形 180 6.11 显示和交互特性 183 6.12 UIView动画 183 6.12.1 建立UIView动画块 184 6.12.2 动画回调 184 6.13 秘诀:视图的淡入和淡出 185 ...
  • 「开源前哨」会定期在知乎专栏分享最新、有趣和热门的开源项目,每个项目有详细的介绍和示例。传送门:https://www.zhihu.com/column/c_1317124962785062912 贡献者:唐尤华、qtvspa、艾凌风、Namco、Daetalus...
  • 将分词结果作为输入参数,调用PartOfSpeechTagging类的process方法,词性保存在Word类的partOfSpeech字段中 如下所示: List<Word> words = WordSegmenter.segWithStopWords("我爱中国"); System.out.println...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

任意类型字段都可以建立索引