MySql索引原理与使用大全

2023-11-08

   林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka    

一、索引介绍

     索引是对数据库表中一列或多列的值进行排序的一种结构。在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。
        索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。在数据库关系图中,可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。

Mysql索引概述

        所有MySQL列类型可以被索引。对相关列使用索引是提高SELECT操作性能的最佳途径。根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。大多数存储引擎有更高的限制。

        在MySQL 5.1中,对于MyISAM和InnoDB表,前缀可以达到1000字节长。请注意前缀的限制应以字节为单位进行测量,而CREATE TABLE语句中的前缀长度解释为字符数。当为使用多字节字符集的列指定前缀长度时一定要加以考虑。

        还可以创建FULLTEXT索引。该索引可以用于全文搜索。只有MyISAM存储引擎支持FULLTEXT索引,并且只为CHAR、VARCHAR和TEXT列。索引总是对整个列进行,不支持局部(前缀)索引。也可以为空间列类型创建索引。只有MyISAM存储引擎支持空间类型。空间索引使用R-树。默认情况MEMORY(HEAP)存储引擎使用hash索引,但也支持B-树索引。

btree索引与hash索引

         对于BTREE和HASH索引,当使用=、<=>、IN、IS NULL或者IS NOT NULL操作符时,关键元素与常量值的比较关系对应一个范围条件。Hash索引还有一些其它特征:它们只用于使用=或<=>操作符的等式比较(但很快)。优化器不能使用hash索引来加速ORDER BY操作。(该类索引不能用来按顺序搜索下一个条目)。MySQL不能确定在两个值之间大约有多少行(这被范围优化器用来确定使用哪个索引)。如果你将一个MyISAM表改为hash-索引的MEMORY表,会影响一些查询。只能使用整个关键字来搜索一行。(用B-树索引,任何关键字的最左面的前缀可用来找到行)。

        对于BTREE索引,当使用>、<、>=、<=、BETWEEN、!=或者<>,或者LIKE 'pattern'(其中 'pattern'不以通配符开始)操作符时,关键元素与常量值的比较关系对应一个范围条件。“常量值”系指:查询字符串中的常量、同一联接中的const或system表中的列、无关联子查询的结果、完全从前面类型的子表达式组成的表达式。

下面是一些WHERE子句中有范围条件的查询的例子。

下列范围查询适用于 btree索引和hash索引:

SELECT * FROM t1     WHERE key_col = 1     OR key_col IN (15,18,20);
 下列范围查询适用于btree索引
SELECT * FROM t1     WHERE key_col > 1     AND key_col < 10;
  SELECT * FROM t1     WHERE key_col LIKE 'ab%'     OR key_col BETWEEN 'bar' AND 'foo';

Mysql如何使用索引

          索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行。表越大,花费的时间越多。如果表中查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要看所有数据。如果一个表有1000行,这比顺序读取至少快100倍。注意如果你需要访问大部分行,顺序读取要快得多,因为此时我们避免磁盘搜索。

大多数MySQL索引(PRIMARY KEY、UNIQUE、INDEX和FULLTEXT)在B树中存储。只是空间列类型的索引使用R-树,并且MEMORY表还支持hash索引。


二、使用方法

首先先创建一个表:

CREATE TABLE
    t_student
    (
        STU_ID INT NOT NULL,
        STU_NAME CHAR(10) NOT NULL,
        STU_CLASS INT NOT NULL,
        STU_SEX CHAR(2) NOT NULL,
        STU_AGE INT NOT NULL,
        PRIMARY KEY (STU_ID)
    )
    ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.1 普通索引

创建索引
这是最基本的索引,它没有任何限制。它有以下几种创建方式:

CREATE INDEX index_id  ON t_student(STU_ID); 



如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。
修改表结构

ALTER TABLE t_student ADD INDEX  index_name(STU_NAME(4)) ;


创建表的时候直接指定

CREATE TABLE
    t_student1
    (
        STU_ID INT NOT NULL,
        STU_NAME CHAR(10) NOT NULL,
        STU_CLASS INT NOT NULL,
        STU_SEX CHAR(2) NOT NULL,
        STU_AGE INT NOT NULL,
        PRIMARY KEY (STU_ID),
        INDEX index_name (STU_NAME(5))
    )
    ENGINE=InnoDB DEFAULT CHARSET=utf8;

删除索引的语法
DROP INDEX index_id  ON t_student;
DROP INDEX index_name  ON t_student;

结果

1.2、唯一索引

       主键就是唯一索引的一种,主键要求建表时指定,一般用auto_increment列,关键字是primary key。它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
创建索引


CREATE UNIQUE INDEX indexName ON mytable(username(length)) 
修改表结构
ALTER mytable ADD UNIQUE [indexName] ON (username(length)) 
创建表的时候直接指定
CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
UNIQUE [indexName] (username(length))
); 

1. 3、多列索引

创建索引

CREATE  INDEX indexName ON mytable(username1(length),username2(length)) 

CREATE INDEX index_age_aex ON t_student(STU_AGE,STU_SEX);


修改表结构

ALTER mytable ADD  [indexName] ON (username1(length),username2(length)) 
创建表的时候直接指定
CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
INDEX [indexName] (username1(length),username2(length))
); 
多列索引的一个优点,它通过称为最左前缀(Leftmost Prefixing)的概念体现出来。继续考虑前面的例子,现在我们有一个firstname、lastname、age列上的多列索引,我们称这个索引为fname_lname_age。当搜索条件是以下各种列的组合时,MySQL将使用fname_lname_age索引:
firstname,lastname,age
firstname,lastname
firstname
从另一方面理解,它相当于我们创建了(firstname,lastname,age)、(firstname,lastname)以及(firstname)这些列组合上的索引。下面这些查询都能够使用这个fname_lname_age索引:
Select peopleid FROM people Where firstname='Mike' AND lastname='Sullivan' AND age='17';
Select peopleid FROM people Where firstname='Mike' AND lastname='Sullivan';
Select peopleid FROM people Where firstname='Mike';
下面这些查询不能够使用这个fname_lname_age索引:
Select peopleid FROM people Where lastname='Sullivan';
Select peopleid FROM people Where age='17';
Select peopleid FROM people Where lastname='Sullivan' AND age='17';


1.4、全文索引

        全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用「分词技术「等多种算法智能分析出文本文字中关键字词的频率及重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。在这里,我们就不追根究底其底层实现原理了,现在我们来看看在MySQL中如何创建并使用全文索引。
        在MySQL中,创建全文索引相对比较简单。例如,我们有一个文章表(article),其中有主键ID(id)、文章标题(title)、文章内容(content)三个字段。现在我们希望能够在title和content两个列上创建全文索引,article表及全文索引的创建SQL语句如下:
--创建article表

CREATE TABLE article (
 id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, 
 title VARCHAR(200),
 content TEXT,
 FULLTEXT (title, content)
 )ENGINE=MyISAM DEFAULT CHARSET=utf8;
 

看看索引

上面就是在创建表的同时建立全文索引的SQL示例。此外,如果我们想要给已经存在的表的指定字段创建全文索引,同样以article表为例,我们可以使用如下SQL语句进行创建:
--给现有的article表的title和content字段创建全文索引
--索引名称为fulltext_article

ALTER TABLE article ADD FULLTEXT INDEX fulltext_article (title, content)
     在MySQL中创建全文索引之后,现在就该了解如何使用了。我们必须使用特有的语法才能使用全文索引进行查询。例如,我们想要在article表的title和content列中全文检索指定的查询字符串,可以如下编写SQL语句:
SELECT * FROM article WHERE MATCH(title, content) AGAINST ('查询字符串');

注意事项

搜索必须在类型为fulltext的索引列上,match中指定的列必须在fulltext中指定过
仅能应用在表引擎为MyIsam类型的表中(MySQL 5.6以后也可以用在Innodb表引擎中了)
仅能再char、varchar、text类型的列上面创建全文索引
像普通索引一样,可以在定义表时指定,也可以在创建表后添加或者修改
对于一个大数量级记录插入,向没有索引的表中插入数据后创建索引比向有索引的数据表中插入的过程要快很多
搜索字符串必须是一个常量字符串,不能是表的列名
在搜索记录的选择性超过50%的时候,认为没有匹配(只在自然搜索中限制)

1.5、验证是否使用是索引

些处接1.3.这里可以接上面多列索引,在这里我已经加了一些数据进去,如下


可以用语句 EXPLAIN SELECT * FROM t_student WHERE STU_AGE = 12;来验证是否使用到了索引

下面说明用到了索引

如果没用到索引,结果应该是如下:


上面只是验证是否使用了索引,接下来看来看看使用了索引和没使用索引的结果:

使用了索引的结果:(注意,这里添加了CREATE INDEX index_age_aex ON t_student(STU_AGE,STU_SEX);)

结果按SEX和AGE来进行排序


把索引给删除了,执行同样的语句:

结果直接按ID进行排序


1.6、使用ALTER 命令添加和删除索引

有四种方式来添加数据表的索引:
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。
以下实例为在表中添加索引。
 ALTER TABLE testalter_tbl ADD INDEX (c);
你还可以在 ALTER 命令中使用 DROP 子句来删除索引。尝试以下实例删除索引:
ALTER TABLE testalter_tbl DROP INDEX (c);
使用 ALTER 命令添加和删除主键
主键只能作用于一个列上,添加主键索引时,你需要确保该主键默认不为空(NOT NULL)。实例如下:

 ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);
你也可以使用 ALTER 命令删除主键:
 ALTER TABLE testalter_tbl DROP PRIMARY KEY;
删除指定时只需指定PRIMARY KEY,但在删除索引时,你必须知道索引名。
显示索引信息
你可以使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。
尝试以下实例:

SHOW INDEX FROM table_name\G

三、索引的不足之处

上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:

1.虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

2.建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。

索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。

四、使用索引的注意事项

使用索引时,有以下一些技巧和注意事项:

1.索引不会包含有NULL值的列

只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。

2.使用短索引

对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

3.索引列排序

MySQL查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。

4.like语句操作

一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。

5.不要在列上进行运算

select * from users where YEAR(adddate)<2007;

将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成:

select * from users where adddate<‘2007-01-01';

6.不使用NOT IN和<>操作



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySql索引原理与使用大全 的相关文章

  • 使用 PHP 安全连接 MySQL 的最佳方法[重复]

    这个问题在这里已经有答案了 我想了解一下你们认为使用 PHP 连接到 MySQL 数据库的最安全方法 目前我正在做的方式是一个实用程序 PHP 文件 我将其包含在所有其他 PHP 文件的顶部 实用程序 PHP 文件是这样的 有什么建议么 建
  • 重命名锁定的表

    将表迁移到新模式时 我想确保使用复制和重命名过程原子切换到新表 因此 我尝试重命名锁定的表 如下所示 CREATE TABLE foo new copy data to new table might take very long INSE
  • 错误:1449,“指定为定义者的用户 ('root'@'localhost') 不存在”

    当我尝试通过应用程序检索数据或将数据插入数据库时 出现上述错误 过程代码如下 CREATE DEFINER root localhost PROCEDURE sp createUser IN p name VARCHAR 20 IN p u
  • MYSQL限制用户访问information_schema

    我有一个MySQL服务器 服务器版本 5 1 68 community MySQL客户端版本 5 0 51a 有没有办法限制所有用户对 information schema 的所有访问 发生的情况是 一些客户站点经常通过 SQL 注入遭到黑
  • 在react中使用Fetch,需要用户名密码才能访问数据库

    我已经对此进行了数小时的研究 但找不到我需要的答案 很抱歉 如果有人问这个问题 而我的研究很糟糕 如果是这样 只需链接有用的堆栈溢出页面 我就会继续我的快乐之路 这是我的问题的摘要 我在CS4班 我们正在设计自己的网页 必须使用我们学校的服
  • Update 查询中的 MySQL 子查询 select 语句

    我有 2 个表 tbl taxclasses tbl taxclasses regions 这是一对多关系 其中主记录 ID 是classid 我在第一个表中有一个名为regionscount 因此 我在表 1 中创建一个税类 然后在表 2
  • 在 Python 中捕获 MySQL 警告

    我想用 Python 捕获并记录 MySQL 警告 例如 如果您提交 MySQL 会向标准错误发出警告 DROP DATABASE IF EXISTS database of armaments 当不存在这样的数据库时 我想捕获并记录它 但
  • 完整的端到端教程 C++ 与 MYSQL Server 5.5

    我花了几个小时寻找关于如何使用 MYSQL Server 5 5 进行查询的完整端到端教程 这是使用 Visual Studio 2010 Express 的 Visual C 控制台应用程序 有人看过这个设置的实际工作教程吗 当所有内容都
  • 如果第一个 SELECT 返回 0 行,则执行第二个 SELECT 查询

    我正在尝试加快 PHP 脚本的速度 并且目前正在该事物的 Mysql 域中推送一些 PHP 逻辑 如果第一个 Select 没有返回行或计数为零 是否有办法进行不同的选择查询 请记住 第一个查询需要首先运行 第二个查询应该only如果第一个
  • Java长到MySQL

    Java相当于什么long在 MySQL 的上下文中数据类型 SIGNED BIGINT http dev mysql com doc refman 5 0 en numeric types html是一个 8 字节长的整数 就像 Java
  • mysqldump 错误 1045 尽管密码正确等但访问被拒绝

    这是一个棘手的问题 我有以下输出 mysqldump 出现错误 1045 尝试连接时用户 root localhost 使用密码 YES 访问被拒绝 当尝试导出我的数据库时mysqldump在 Windows XP 上 用户名是 root
  • 在 Laravel 上将百万行数据从一个数据库复制到另一个数据库

    使用 Laravel Eloquent 我从旧 Mysql 数据库的一张表中复制 700 万行数据 并将这些行放在新 Mysql 数据库的不同表中 问题是 执行此操作花费了几乎一天的时间 并且我需要对近 80M 行重新执行此操作 我一次使用
  • 如何使用带有 where 子句的内连接?

    我在这里发布一些扩展如何连接多个sql查询以获得一张表 https stackoverflow com questions 71098208 how to concatenate more sql queries to get one ta
  • 长 IN 子句是代码异味吗?

    简单的问题 想知道长 IN 子句是否有代码味道 我真的不知道如何证明它的合理性 除了我认为的味道之外 我无法解释为什么它有味道 select name code capital population flower bird from us
  • 无法导入 python-mysqldb

    我使用安装了 python mysqldb sudo apt get install python mysqldb 我尝试使用它但没有成功 以下命令在 Python 提示符下不起作用 import python mysqldb Or imp
  • MySQL如何连接两个字段的表

    我有两张桌子date and id字段 我想加入这两个领域 我试过 JOIN t2 ON CONCAT t1 id t1 date CONCAT t2 id t2 date 这有效 但速度非常慢 有一个更好的方法吗 JOIN t2 ON t
  • 插入前检查数据库中是否存在行

    DBH new PDO dsn username password opt DBH gt setAttribute PDO ATTR ERRMODE PDO ERRMODE EXCEPTION DBH gt setAttribute PDO
  • 从 MySQL 将数字数据加载到 python/pandas/numpy 数组的最快方法

    我想从 MySQL 表中读取一些数字 双精度 即 float64 数据 数据大小约为 200k 行 MATLAB 参考 tic feature accel off conn database c fetch exec conn select
  • MySQL:根据 ORDER BY 更新“排序”列

    完全编辑 我的查询有来自 2 个表的 2 列 文件名和排序顺序 完整的表格在这里完成http sqlfiddle com 9 8c0507 http sqlfiddle com 9 8c0507 Example SELECT FROM ta
  • MySQL空间几何验证wkt

    在 MySQL mysql gt select astext geomfromtext polygon astext geomfromtext polygon NULL 1 row in set 0 00 sec 但对于较新的 MySQL

随机推荐

  • Qt之QtSoapHttpTransport 访问WebService

    简述 Web Service技术 能使得运行在不同机器上的不同应用无须借助附加的 专门的第三方软件或硬件就可相互交换数据或集成 依据Web Service规范实施的应用之间 无论它们所使用的语言 平台或内部协议是什么 都可以相互交换数据 Q
  • win10 安装mingw 使用makefile

    下载了一个新代码 里面有 h c 和 Makefile文件 说明文件中写道先编译 compiling Type make in a shell 在控制台上输入make 首先win r打开控制台 输入cmd 输入e 回车 cd github
  • mybatis查询返回空,sql数据库执行有数据

    需要编写一个统计功能 在Navicat Premium里调整好sql 然后编写后台代码 controller service serviceImpl dao 在serviceImpl 上添加 Service 注解 在dao 添加 Repos
  • 【测试 3】三、软件测试方法

    4 软件测试方法 包括白盒测试 灰盒测试 黑盒测试 静态测试 动态测试 手动测试 自动测试等 学习目标 熟悉白盒测试方法 掌握黑盒测试方法 掌握黑盒测试用例设计的方法 等价类划分法 边界值分析法 因果 图分析法 判定表分析法 正交试验法等
  • 图像特征提取三大算法:HOG特征,LBP特征,Haar特征

    一 HOG特征 from http dataunion org 20584 html 1 HOG特征 方向梯度直方图 Histogram of Oriented Gradient HOG 特征是一种在计算机视觉和图像处理中用来进行物体检测的
  • Intellij IDEA运行报Command line is too long的解决办法

    报错信息大概如下 Error running xxx Command line is too long Shorten command line for xxx or also for Application default configu
  • leet116. 每个节点的右向指针

    题目 给定一个二叉树 struct TreeLinkNode TreeLinkNode left TreeLinkNode right TreeLinkNode next 填充他的每个 next 下一个 指针 让这个指针指向其下一个右侧节点
  • Mybatis-Plus-【通俗易懂全讲解】

    Mybatis Plus 简介 MyBatis Plus opens new window 简称 MP 是一个 MyBatis opens new window 的增强工具 在 MyBatis 的基础上只做增强不做改变 为简化开发 提高效率
  • 08-go mod和vendor

    文章目录 1 go mod 1 1 创建项目 1 2 mod初始化 1 3 重新构建依赖 1 4 编译 2 vendor 2 1 拷贝依赖 2 2 使用vendor目录编译 1 go mod 1 1 创建项目 创建一个目录 root liu
  • QT中私有公有化(Q_DECLARE_PUBLIC Q_DECLARE_PRIVATE)原理小DEMO

    结果 b ljtcnt 8889 b ljtcnt 1457 代码如下 DrawToolButton h ifndef DrawToolButton H define DrawToolButton H include
  • CSDN中发布文章时上传图片上传失败的问题

    多是与搜狗输入法有关联 解决办法 在需要上传图片的时候切换到其他的输入法即可正常上传
  • Python中常用的正则表达式

    正则表达式是对字符串操作的一种逻辑公式 就是用事先定义好的一些特定字符 及这些字符的组合 组成一个 规则字符串 这个 规则字符串 用来表达对字符串的一种过滤逻辑 非python独有 但是python的re模块提供了实现 在python中写正
  • python实战-JSON形式爬虫-批量爬取图片并下载

    文章目录 一 前言 二 思路 1 网站返回内容 2 url分页结构 3 根据请求快速构造代码 三 具体代码的实现 四 总结 一 前言 上一篇文章已经对html形式的爬虫进行实战 批量爬取电影下载链接 接下来将实战json形式爬虫 批量爬取并
  • Java环境配置

    文章目录 windows环境 linux环境 yum安装 压缩包安装 首先需官网下载所需版本jdk 注意与机器对应 官网下载地址 https www oracle com technetwork cn java javase downloa
  • 时间序列--平滑+特征工程

    https machinelearningmastery com moving average smoothing for time series forecasting python 平滑的希望是消除噪声 更好地揭示潜在的因果过程的信号
  • [mpeg4]mpeg4码流分析

    基于内容的AV编码 以前AV信息被看作纯粹的数据 编码时没有结合自身包含的内容 例如视频序列被认为是象素的组合 MPEG 4采用了对象的概念 不同的数据源被视作不同的对象 分别编码 数据的接收者不再是被动的 他可以对不同的对象进行自己的操作
  • 特征工程和多项式回归

    特征工程的定义 特征工程 Feature Engineering 特征工程是将原始数据转化成更好的表达问题本质的特征的过程 使得将这些特征运用到预测模型中能提高对不可见数据的模型预测精度 特征工程简单讲就是发现对因变量y有明显影响作用的特征
  • Multimodal Machine Learning: A Survey and Taxonomy/多模态机器学习综述

    目录 1 介绍 introduction 2 历史回顾 review 3 表示 representation 4 映射 Translation Mapping 5 对齐 Alignment 6 融合 Fusion 7 联合学习 Co lea
  • Spring系列之玩转bean scope

    本文内容 详细介绍5中bean的sope及使用注意点 自定义作用域的实现 应用中 有时候我们需要一个对象在整个应用中只有一个 有些对象希望每次使用的时候都重新创建一个 spring对我们这种需求也提供了支持 在spring中这个叫做bean
  • MySql索引原理与使用大全

    林炳文Evankaka原创作品 转载请注明出处http blog csdn net evankaka 一 索引介绍 索引是对数据库表中一列或多列的值进行排序的一种结构 在关系数据库中 索引是一种与表有关的数据库结构 它可以使对应于表的SQL