Mysql优化(出自官方文档)

您所在的位置:网站首页 mysql数据库官方文档 Mysql优化(出自官方文档)

Mysql优化(出自官方文档)

2023-06-28 09:52| 来源: 网络整理| 查看: 265

Mysql优化(出自官方文档) - 第八篇(索引优化系列)目录

Mysql优化(出自官方文档) - 第八篇(索引优化系列)Optimization and Indexes1 Foreign Key Optimization2 Column Indexes3 Column Indexes && Multiple-Column Indexes4 Comparison of B-Tree and Hash Indexes5 Use of Index Extensions6 Invisible Indexes7 Descending IndexesMysql优化(出自官方文档) - 第八篇(索引优化系列)Optimization and Indexes正确的创建索引往往会加快查询速度,但是,没有必要的索引往往只会浪费空间,并且增加插入,更新和删除的开销,因为进行这些操作要同时更新索引。

但是,索引并不是万能的,在下面的几个场景中,索引将会显得不是那么有用:

小表,或者大表,但是需要请求所有行当一个请求需要表中的大部分行时,连续读往往效率会比索引高,因为连续读会减少磁盘seek的时间。1 Foreign Key Optimization如果经常读取一个表中的多个列,那么,把最少访问的列分出来单独作为一个小表,然后使用外键的方式和主表联系起来,这样子在读取数据的时候就能尽量减少磁盘的I/O读写。

2 Column IndexesIndex Prefixes

Mysql允许只使用一些字段的一部分来作为索引,这其中包括所有的TEXT和BLOB字段,如下面的例子:

CREATE TABLE test (blob_col BLOB, INDEX(blob_col(10)));需要注意的是,对于CHAR, VARCHAR, TEXT类型的字段,长度为字符个数的意思,但是对于非字符串字段,如BINARY, VARBINARY, BLOB字段,长度为字节个数的意思。

FULLTEXT Indexes

该索引适用于CHAR, VARCHAR, and TEXT的列,并且全文索引不支持前缀,只支持全列的索引。当查询符合如下特征的时候,全文索引将会非常有用:

FULLTEXT查询语句值需要document ID或者search rank(分级??)FULLTEXT查询语句对查询到的结果进行一个降序排序,并且有一个LIMIT语句选取top N项,这种情况下为了使用优化必须保证查询语句没有WHERE且ORDER BY只有一列。FULLTEXT查询只获取COUNT(*)的结果,且没有WHERE语句,如果需要WHERE过滤,请将WHERE写为WHERE MATCH(TEXT) AGAINST('other_text'),并且没有任何> 0的比较操作符。Indexes in the MEMORY Storage Engine对于内存存储引擎,默认使用HASH索引,但是同样也支持BTREE索引。

3 Column Indexes && Multiple-Column IndexesMysql支持单独的一列作为索引,也可以使用多列作为索引,当使用多列的时候,使用最左边(leftmost prefix of the index)的列进行查询,可以用到索引,否则,Mysql将无法使用索引,举例如下:

假设一个表含有下面的索引:

INDEX name (last_name,first_name)对于下面的查询语句都可以使用到name索引:

SELECT * FROM test WHERE last_name='Jones';

SELECT * FROM test WHERE last_name='Jones' AND (first_name='John' OR first_name='Jon');

SELECT * FROM test WHERE last_name='Jones' AND first_name >='M' AND first_name < 'N';下面的语句因为没有使用最左边的列进行查询,所以无法使用索引:

SELECT * FROM test WHERE first_name='John';

SELECT * FROM test WHERE last_name='Jones' OR first_name='John';假设有两列col1和col2,如果索引刚好建在col1和col2上,那么可以直接使用索引,但是如果col1和col2是单独的索引(即不是多列索引),那么Mysql会尝试使用 Index Merge optimization (see Section 8.2.1.3, “Index Merge Optimization”)技术,或者判断两个索引中哪个的条件是最严苛的,能够排除尽可能的行,在决定使用哪个索引。

4 Comparison of B-Tree and Hash IndexesB-Tree Index CharacteristicsB树索引支持 =, >, >=,



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3