数据库调优

本文详细探讨了数据库调优的各个方面,包括索引的合理使用,如选择合适的标识符和数据类型,创建短索引和理解最左匹配原则。还讨论了查询语句的优化,如避免全表扫描,合理使用预编译,以及如何适当使用in, exists, not in, not exists。此外,提到了避免回表查询和索引覆盖的概念,并建议根据实际情况选择数据分表分区策略以提高查询效率。" 81174369,7402478,Java/Kotlin JPA数据库关系定义详解,"['Java', 'Kotlin', 'Hibernate', '数据库设计', 'JPA关系映射']
摘要由CSDN通过智能技术生成

一. 索引的使用和选择

   索引的使用可以在数据查询过程中加快数据搜索的进度,如果数据库比作一部字典,没有索引想要获取目标的某个词,从第一页开始搜索直到目标被搜索到,如果目标刚好在字典最后一页,那基本是上遍历了整个字典,如果添加索引就如可以在字典上根据拼音或者笔画,部首找到目标所在的页面,直接跳转到目标页面进行搜索。

  1.1选择标识符:使用整数的标识符比使用字符串的标识符要快

article表,id作为主键,类型为varchar,数据量为3979条
select * from article  -- 用时1.5-1.65秒之间
desc select * from article; 遍历的行数是3105行
article表,id作为主键,类型为int,数据量为3979条
select * from article  -- 用时1.52-1.5秒之间
desc select * from article; 遍历的行数是2820行

1.2索引的数据类型选择

       数据类型越小,越简单为好,设计字段值时尽量避免NULL值,NULL值会使索引运行复杂或者无法使用索引进行查询,如果字段值为空可以在数据库时指定字段为NOT NULL,然后字段的值默认为一个字符串'0'   

1.3组合索引的字段选择

    组合索引的使用规则是从最左边开始适配,比如一个组合索引index(a,b,c),则可以用如下字段进行查询,a,ab,abc,但是不能从b,bc两个字段进行查询,这个时候索引不起作用。这就是最左匹配

    一张文章表article,索引是组合索引article_title,article_author

组合索引,通过两个索引条件进行查询,用时0.890秒
select * from article where article_title like '%渗透%' and article_author like '%FreeBuf%'; -- 0.890s

组合索引,数据查询遍历2820行
desc select * from article where article_title like '%渗透%' and article_author like '%FreeBuf%'; -- 2820


组合索引,通过article_author进行查询,用时1.396秒
select * from article where article_author like '%FreeBuf%'; -- 1.396s

组合索引,通过title查询,用时0.923
select * from article where article_title like '%渗透%'  -- 0.923s

1.4 数据库短索引

     如果一个字段的值很长,但是可以通过前面的几个字符能得出值,那么可以设置前面n个字符的索引。比如create index short_index_name('name(10)') ,这里的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值