【每日一问】面试官:如何对数据库进行优化?

【每日一问】如何实现数据库的优化?

要解决数据库的优化问题,可以从表结构优化、sql优化和索引优化三个方面考虑

一、表结构优化
  • 首先,在业务场景合适的情况下,我们可以尽量更小的数据类型存储数据。
  • 为了减少连表查询,我们还可以适当添加冗余字段。
  • 也可以在表的一些字段上建立索引,优先考虑where、order by、group by使用到的字段。但是要考虑到索引失效的问题。还有就是建立的索引不宜过多,过多的索引反而会减低sql的查询效率
二、sql优化
  • 尽量避免使用select *,避免出现全表扫描的情况,毕竟查询到不需要的字段,也是一种资源浪费。
  • 多表联查的时候,遵循小表在前,大表在后的原则。
  • 查询的时候,我们尽量把数据量小的字段放在前面,提高查询效率。
  • 当数据量大时,避免使用where 1=1的条件,避免全表扫描,可以使用动态sql进行优化。
  • 当我们进行连表查询的时候,可以使用表的别名,并把表的别名放在字段的前缀上,这样就可以减少sql解析的时间。
  • 尽量避免出现全表扫描的情况,比如使用了in/not in,or,或者对字段进行is null判断,模糊查询两边都用%括起来,例如'%小%',就尽量不要使用。
  • 查询使用到了索引的时候,就要检查sql是否会命中索引,避免索引的失效。
三、索引优化

索引优化问题其实就相当于如何避免索引的失效问题

  • 尽量避免在字段开头模糊查询,比如%A会导致数据库引擎放弃索引进行全表扫描。如果需要一定要在前面使用模糊查询,我们可以使用MySQL的内置函数INSTR(str,substr)来进行模糊匹配。
  • 尽量避免使用in/not in,这样会导致走全表扫描。针对连续的值,我们可以使用between来代替;如果是子查询,那么可以使用exists来代替。
  • 尽量避免使用 or,会导致数据库引擎放弃索引进行全表扫描。可以使用union来代替or.
  • 尽量避免对字段进行is null判断,会导致数据库引擎放弃索引进行全表扫描。 可以给字段添加默认值0,对0值进行判断。
  • 尽量避免在索引列中运算
  • 查询条件不能用 !=
  • 不要再索引列上进行任何操作,比如计算,函数操作等
  • 字符串类型一定要加上引号,因为mysql数据库存在隐式转换。强制改变原有类型会导致查询不走索引。

大概从这些方面去回答,就可以直面面试官的“严刑拷打”喽~

数据库面试题大库随着随着互联技术的普及和应用,人类社会已经进入大数据时代,各行各业也都需要大量数据的支持,而根据大数据五V特性之一数据价值密度低,从大量数据爬去出有用的信息就是大难点。基于Python的爬虫技术可以自动完成网络数据的收集、解析、格式化存储,而rabbitmq可以实现分布式爬虫技术,大大提升工作效率。下面主要以时间顺序列出研究rabbitmq爬虫相关技术的发展以及应用。随着互联技术的普及和应用,人类社会已经进入大数据时代,各行各业也都需要大量数据的支持,而根据大数据五V特性之一数据价值密度低,从大量数据爬去出有用的信息就是大难点。基于Python的爬虫技术可以自动完成网络数据的收集、解析、格式化存储,而rabbitmq可以实现分布式爬虫技术,大大提升工作效率。下面主要以时间顺序列出研究rabbitmq爬虫相关技术的发展以及应用。随着互联技术的普及和应用,人类社会已经进入大数据时代,各行各业也都需要大量数据的支持,而根据大数据五V特性之一数据价值密度低,从大量数据爬去出有用的信息就是大难点。基于Python的爬虫技术可以自动完成网络数据的收集、解析、格式化存储,而rabbitmq可以实现分布式爬虫技术,大大提升工作效率。下面主要以时间顺序列出研究rabbitmq爬虫相关技术的发展以及应用。随着互联技术的普及和应用,人类社会已经进入大数据时代,各行各业也都需要大量数据的支持,而根据大数据五V特性之一数据价值密度低,从大量数据爬去出有用的信息就是大难点。基于Python的爬虫技术可以自动完成网络数据的收集、解析、格式化存储,而rabbitmq可以实现分布式爬虫技术,大大提升工作效率。下面主要以时间顺序列出研究rabbitmq爬虫相关技术的发展以及应用。随着互联技术的普及和应用,人类社会已经进入大数据时代,各行各业也都需要大量数据的支持,而根据大数据五V特性之一数据价值密度低,从大量数据爬去出有用的信息就是大难点。基于Python的爬虫技术可以自动完成网络数据的收集、解析、格式化存储,而rabbitmq可以实现分布式爬虫技术,大大提升工作效率。下面主要以时间顺序列出研究rabbitmq爬虫相关技术的发展以及应用。随着互联技术的普及和应用,人类社会已经进入大数据时代,各行各业也都需要大量数据的支持,而根据大数据五V特性之一数据价值密度低,从大量数据爬去出有用的信息就是大难点。基于Python的爬虫技术可以自动完成网络数据的收集、解析、格式化存储,而rabbitmq可以实现分布式爬虫技术,大大提升工作效率。下面主要以时间顺序列出研究rabbitmq爬虫相关技术的发展以及应用。随着互联技术的普及和应用,人类社会已经进入大数据时代,各行各业也都需要大量数据的支持,而根据大数据五V特性之一数据价值密度低,从大量数据爬去出有用的信息就是大难点。基于Python的爬虫技术可以自动完成网络数据的收集、解析、格式化存储,而rabbitmq可以实现分布式爬虫技术,大大提升工作效率。下面主要以时间顺序列出研究rabbitmq爬虫相关技术的发展以及应用。随着互联技术的普及和应用,人类社会已经进入大数据时代,各行各业也都需要大量数据的支持,而根据大数据五V特性之一数据价值密度低,从大量数据爬去出有用的信息就是大难点。基于Python的爬虫技术可以自动完成网络数据的收集、解析、格式化存储,而rabbitmq可以实现分布式爬虫技术,大大提升工作效率。下面主要以时间顺序列出研究rabbitmq爬虫相关技术的发展以及应用。随着互联技术的普及和应用,人类社会已经进入大数据时代,各行各业也都需要大量数据的支持,而根据大数据五V特性之一数据价值密度低,从大量数据爬去出有用的信息就是大难点。基于Python的爬虫技术可以自动完成网络数据的收集、解析、格式化存储,而rabbitmq可以实现分布式爬虫技术,大大提升工作效率。下面主要以时间顺序列出研究rabbitmq爬虫相关技术的发展以及应用。随着互联技术的普及和应用,人类社会已经进入大数据时代,各行各业也都需要大量数据的支持,而根据大数据五V特性之一数据价值密度低,从大量数据爬去出有用的信息就是大难点。基于Python的爬虫技术可以自动完成网络数据的收集、解析、格式化存储,而rabbitmq可以实现分布式爬虫技术,大大提升工作效率。下面主要以时间顺序列出研究rabbitmq爬虫相关技术的发展以及应用。随着互联技术的普及和应用,人类社会已经进入大数据时代,各行各业也都需要大量数据的支持,而根据大数据五V特性之一数据价值密度低,从大量数据爬去出有用的信息就是大难点。基于Python的爬虫技术可以自动完成网络数据的收集、解析、格式化存储,而rabbitmq可以实现分布式爬虫技术,大大提升工作效率。下面主要以时间顺序列出研
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Steph Wae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值