- 使用缓存优化查询
进行多次相同的查询,结果就会放入到缓存中,后续再进行相同的的查询,就直接从缓存中提取,不会到表中提取数据 - explain检测SQL语句(SQL执行计划)
- 给搜索字段建立索引where后面的字段建立索引
但是查询大量数据还是会全表搜索,索引失效,具体原因是MySQL会对查询进行优化,除了主键索引以外其他的都是辅助索引,会二次回表查找,速度更慢,所以自动优化为全表查询(聚簇索引与非聚簇索引) - 如果已经知道查询的数据有m条了,可以通过limit m来限制
这样数据在查询时查到第m条数据就会自动停止,如果不加会在查询到第m条数据后继续查询到遍历所有数据后再返回,浪费时间 - 选择正确的MySQL索引(InnoDB与MyISAM)
- 在进行大量delete和insert时进行拆分
因为进行这种操作的时候会锁住数据库,大量这种SQL语句会导致数据库长期上锁,短时间内所有请求都无法实现 - 数据类型尽量使用小的
- 尽量不给NULL值,会导致索引失效
- id主键每张表都要建立
- **避免使用select ***
查的越多,速度就越慢,数据越多对网络的传输也会负载过重 - rand()计算是在cpu上面进行的,尽量避免
- 连接两张表的时候,join保证两个字段类型要一致
否则无法建立索引 - 垂直分割
将拥有较多列的数据拆分成两张表
【数据库】SQL优化
最新推荐文章于 2024-07-23 14:05:29 发布