黑马程序员技术交流社区
标题:
【广州python】数据库优化
[打印本页]
作者:
唐伯虎(0)
时间:
2019-8-1 14:06
标题:
【广州python】数据库优化
1、MySQL优化综合性技术
表的设计合理化(符合3NF,有时也要进行反三范式操作)
添加适当索引
分表技术(水平分割、垂直分割)
主从复制,读写分离
存储过程(模块化编程,可以提高速度)
对MySQL配置优化(配置最大并发数my.ini,调整缓存大小)
系统应用优化等
服务器的硬件优化
2、索引分类
单值索引
一个索引只包含单个列,一个表可以有多个单值索引,一般来说, 一个表建立索引不要超过5个
唯一索引
索引列的值必须唯一,但允许有空值
复合索引
一个索引包含多个列
全文索引
MySQL全文检索是利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度。
3、MySQL语句正确使用索引
全值匹配(最好)
如:建立了三个索引,查询时最好都使用上三个索引
最佳左前缀法则
如果索引有多列,要遵守最左前缀法则,指的就是从索引的最左列开始 并且不跳过索引中的列
计算、函数、类型转换会导致索引失效
范围条件查询,右边索引失效
使用不等于(!=或者<>)时无法使用索引
or引起索引失效
like引起索引失效
4、大批量数据分页操作优化
没有优化的查询
SELECT * FROM logs1 LIMIT 500000,10;
优化
使用子查询优化方式1
select
*
from
logs1 e inner
join
(
SELECT
id
from
logs1
limit
500000
,
10
) et
on
e
.id
= et
.id
使用子查询优化方式2
select
*
from
logs1
where
id >=(
SELECT
id
from
logs1
limit
500000
,
1
)
limit
10
使用id限定优化
记录上一页最大的id号 使用范围查询,限制是只能使用于明确知道id的情况,不过一般建立表的时候,都会添加基本的id字段,这为分页查询带来很多便利
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2