跳至主要內容
mysql查询优化

mysql查询优化

思路

首先要分析一点是判断那些数据是经常查询的,然后建立一个集合,在对这些集合做并集,就会得到一个查询频次较高集合,之后分析他的特征,对这些特征建立一个索引。 或者是查询时语句的优化。尽可能的明确查询的数据范围以及查询条件。

数据库优化

索引优化

语句优化

  1. 明确的条件限定,就是需要什么样的数据就对应请求什么样的数据列,尽可能少用*
  2. 可以通过explain关键字查看select查询结果,并对其针对性的优化
  3. 使用limit时减少返回的行数
  4. 尽可能的不要在where字句后面使用函数操作,这将导致引擎放弃索引而进行全表扫描
  5. 可使用exists代替in
  6. 尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该考虑改写。
  7. 尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。
  8. 尽量避免大事务操作,提高系统并发能力。

Mr.Lexon大约 1 分钟middlewaremiddlewaremysql
查询案例

查询案例

select a.* , b.*

from employees a

inner join salaries b

on a.emp_no=b.emp_no

where a.gender='M' and a.birth_date

between '1960-01-01' and '9999-12-31' and b.salary = 70000

order by a.id limit 5;

Mr.Lexon小于 1 分钟middlewaremiddlewaremysql
redis数据结构

redis数据结构

Redis的五种数据结构包括以下五种:

  1. String:字符串类型
  2. List:列表类型
  3. Set:无序集合类型
  4. ZSet:有序集合类型
  5. Hash:哈希表类型

String类型

string 是 redis 最基本的类型,一个key对应一个value, string 类型的值最大能存储 512MB。


Mr.Lexon大约 1 分钟middlewaremiddlewareredis
创建视图

创建视图

CREATE VIEW v_[module_name]_[model_name] AS
select * from 
(
select 
    [tableA].[column_name] as [reset_name],
    [tableB].[column_name] as [reset_name],
from 
`table_A` as `tableA` 
inner join 
`table_B` as `tableB` on 
`tableB`.`reset_name` = `tableA`.`reset_name` 
order by `tableA`.`reset_name` asc, 
`tableA`.`reset_name` asc 
) 
as `m` group by `m`.`reset_name`, `m`.`reset_name` order by `m`.`reset_name` asc;

Mr.Lexon小于 1 分钟middlewaremiddlewaremysql