如果你的项目运行的速度相对较慢可以使用数据库优化,数据库优化的方法有挺多种的,一起来看看吧。
1.使用数据缓存。可以将数据缓存到文件或者redis,memcache这样的高速储存系统中,来减少数据库的查询次数。
2.结构优化。
**选择合适的数据库引擎常见的数据库引擎有innodb,myisam 查询较多的场景可以使用myisam,需要事务支持的场景可以选择innodb。
**满足基本的三范式。
**选择合适的字段类型 优先级 数字> 时间 > 字符串。
** 适当的字段冗余,来提高数据的查询效率
3.定位慢查询语句。
//启动 mysql
> mysqld_safe --user=mysql --slow_query_log --slow_query_log_file=/tmp/slow-query.log --long_query_time=1
上面这条命令启动 mysql 之后, 在运行过程中, 可以将运行时间超过 1 秒的sql 记录到文件下。
4.语句优化。
**不要使用select * 。
**最好不要使用null。
**在where字段上添加索引。
**尽量不要在where字句上进行函数操作 例子 :(select id from t where substring(name,1,3) = 'abc')。
**模糊查询中,%前置不要使用索引 例子 : “ %前置 ”。
**使用or语句要注意 左右两侧都有索引才能使用索引。
**对于分组的数据MySQL会对数据自动排序,可以强制其不排序 order by null。
5.索引优化。
索引是一种单独的,物理的对数据库进行排序的存储结构,可以指数级别的提高查询的速度。我们可以对where语句后的字段添加索引,就是条件字段。如果查询多个字段我们可以增加组合索引。
但注意索引也不能化用,过多的索引会增加数据更新的效率。
6.分库分表。
分库,一般按照业务的功能进行对数据表经行拆分,使数据表更加有条理性。
分表有两种,垂直拆分和水平拆分 垂直拆分就是将一些不常用的字段单独的放到一张表中,如果查询的数据过多可以使用水平分表,比如按照年, 月, 日等。
==拆分表需要对代码进行调整, 所以要慎重.
7.主从复制,读写分离。
可以创建多台数据库服务器, 一些数据库专门用来写入数据, 另外一些数据库做同步数据, 实现读写分离, 降低单台数据库压力, 提高读写的效率。
8.中文分词。
mysql 全文检索不支持中文, 所以针对大段文本的检索效率不高, 我们可以借助中文分词的方式来提高检索的效率. 常见的分词有 SCWS, phpAnalysis , 还有一个基于python的分词系统不错, 叫结巴分词.