mysql优化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql优化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2332字,纯文字阅读大概需要4分钟。
内容图文
当remark传入int类型的值后,查询时间0.14秒,传入字符类型后只需要0.005秒。
SQL优化--函数计算
基本原则:不在索引列进行数学运算和函数运算。
索引字段进行数学运算时,不走索引。可以放到后面对值进行运算。
例如:
通过运行时间就可以看出效果。
索引字段慎用函数运算,MySQL的优化器对函数运算识别不出来时会直接走全表扫描。
例子如下:
SQL优化--分页
传统分页
select * from table limt 10000,10;
LIMIT原理
limit 10000,10; 偏移量越大则越慢。查询的时候要一步一步遍历到第10010条记录,然后取后10条记录,前面的全部抛弃掉。
推荐分页SQL
select * from table where id>=23424 limit 11;
#10+1(每页10条)
select * from table where id>23434 limit 11;
分页方式二
select * from table where id>=(select id from table limit 10000,1) limit 10;
分页方式三
select * from table where Inner join (select id from table limit 10000,10) using (id);
分页方式四
先取id:select id from table limit 10000,10;
select * from table where id in (123,456,...);
具体示例:
MySQL> select sql_no_ cache * from post limit 10,10;10 row in set (0.01 sec)
MySQL> select sql_ no_cache * from post limit 2000,10;10 row in set (0.13 sec)
MySQL> select sql_no_cache * from post limit 80000,10;10 rows in set (0.58 sec)
MySQL> select sql_no_ cache id from post limit 8000,10;10 rows in set (0.02 sec)
MySQL> select sql_no_ cache * from post WHERE id> = 323423 limit 10;10 rows in set (0.01 sec)
MySQL> select * from post WHERE id >= ( select sql_ no_ cache id from post limit8000,1 ) limit 10;10 rows in set (0.02 sec)
可扩展性设计
业务隔离
不同的业务使用不同的数据库实例
垂直拆分
不同的业务表拆分到不同的数据库中,可以根据不同的模块,不同的功能将表拆分到不同个数据库中。逻辑比较清晰,但是也要考虑到具体的情况,如果有关联查询时,两个表放在里不同的库中,这样就拆分的不合理了,所以拆分的时候要对业务做深入的了解。
水平拆分
一个表中的数据拆分到不同表中或不同的库中。但是拆分的时候要慎重的考虑好了,要以哪个键作为唯一标识进行拆分。一但确定下来最好不要随意更改。
终极--数据拆分
水平拆分+垂直拆分
(如果对分布式事务要求不太高的可以使用WTable,底层也是做了拆分。聚合操作也比较麻烦,要对每个库进行请求,然后再进行聚合操作。)
总结
这次的知识总结的比较粗糙,以后会对每一块做深入研究。
mysql优化
标签:自己 理解 传统 学习 信息 分页 类型 dml lob
本文系统来源:https://www.cnblogs.com/yuanzipeng/p/10245970.html
内容总结
以上是互联网集市为您收集整理的mysql优化全部内容,希望文章能够帮你解决mysql优化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。