求大神讲讲,关于数据库性能优化方法

Meizan_ 2017-11-21 09:56:42
小白一枚,最近在面试工作,问到关于数据库方面的问题,比如数据性能优化等等,不知道该怎么回答.
...全文
450 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
welcomejavas 2017-12-05
  • 打赏
  • 举报
回复
细节太多了,尽量用最优的方法,比如is not null 尽量用ISNULL;还有就是多表查询时,尽量inner,少用子查询,筛选更快,其次是索引,触发器等
Meizan_ 2017-12-02
  • 打赏
  • 举报
回复
引用 12 楼 xpresslink 的回复:
数据库优化和SQL查询优化是两个完全不同的问题好吧。 要做数据库优化要有比较强DBA的经验,而且还要配合应用的设计架构。 合理的设置参数,分配内存,设置表空间等对于性能影响是整体性的。 还有一些要涉及到操作系统和硬件方面,比如合理使用RAID,把临时表空间放到SSD上去等。 另外经验是一方面,大多数情况下调优是要做性能测试的。 有些优化措施是互损的,比如建索引,查询就会提升性能,但是每次update、delete、insert表的时候,都会维护相应的索引,性能就会下降。 行数小于300的表建索引性能反而低。 诸如此类的知识可以写一本书。 所以楼主还是找本数据库方面的书看看吧,这不是几句话就能说完的。 对于程序员来说可能更多的是 SQL查询优化。
感谢指点!
高 斯林 2017-12-02
  • 打赏
  • 举报
回复
万变不离其宗,独孤java的精髓就是以无表胜有表,少年自己体会去吧
混沌鳄鱼 2017-11-30
  • 打赏
  • 举报
回复
数据库优化和SQL查询优化是两个完全不同的问题好吧。 要做数据库优化要有比较强DBA的经验,而且还要配合应用的设计架构。 合理的设置参数,分配内存,设置表空间等对于性能影响是整体性的。 还有一些要涉及到操作系统和硬件方面,比如合理使用RAID,把临时表空间放到SSD上去等。 另外经验是一方面,大多数情况下调优是要做性能测试的。 有些优化措施是互损的,比如建索引,查询就会提升性能,但是每次update、delete、insert表的时候,都会维护相应的索引,性能就会下降。 行数小于300的表建索引性能反而低。 诸如此类的知识可以写一本书。 所以楼主还是找本数据库方面的书看看吧,这不是几句话就能说完的。 对于程序员来说可能更多的是 SQL查询优化。
  • 打赏
  • 举报
回复
简单说下我的认识。数据库开发,是指基于数据库的数据,根据业务定制上层应用,开发函数以及存储过程等;而数据库管理,多指DBA主要是管理数据库,包括数据库设计,数据存储管理,权限管理,日志管理,异常处理以及其他一些的日常维护。通常,二者相互帮助,共同设计维护一个利于开发,易于维护 ,存储合理的数据库!数据库管理是个繁杂的工作,需要时间和经验的积累沉淀!
super就是我 2017-11-30
  • 打赏
  • 举报
回复
使用开源数据库中间件MyCat来进行mysql的分片及读写分离来进行优化.
  • 打赏
  • 举报
回复
数据库优化的话,就需要考虑数据库的各种配置。使用哪种库类型,io流。
xy825459556 2017-11-24
  • 打赏
  • 举报
回复
1.尽量不要用between .. and ... ,使用 》= 和 《= , eg: select billdate from A where empid between 1 and 5; --> select billdate from A where empid >= 1 and empid <= 5; 2.尽量SQL不要用小写字母,都用大写字母 3.能用索引就用索引,其作用就相当于告诉数据库直接从哪里取数据就可以了,不用全部查找一遍 4.使用group by时,最后先把不用的数据排除掉,可以先在where 条件里面排除无关数据,在group by 5.in 和 not in ,换为 Exists 和 not Exists 6.当进行数据需要多表关联时,最好使用别名 7.复杂的SQL往往会消耗大量的资源,能用函数解决,就用函数 8.程序进行select 时,后面都要commit,这会释放占用的资源 9.也是最重要的,不要用 select * from 【表名】 ,用select 【列名】 from 【表名】 。除非不知道表字段时测试用。 以上是我的一些经验,纯当抛砖引玉了。
Meizan_ 2017-11-24
  • 打赏
  • 举报
回复
引用 5 楼 en_joker 的回复:
问你的是数据库优化还是sql优化?
数据库优化要怎么讲?
  • 打赏
  • 举报
回复
问你的是数据库优化还是sql优化?
Meizan_ 2017-11-22
  • 打赏
  • 举报
回复
引用 3 楼 Milogenius 的回复:
[quote=引用 2 楼 qq_40794696 的回复:] 1.尽量不要用between .. and ... ,使用 》= 和 《= , eg: select billdate from A where empid between 1 and 5; --> select billdate from A where empid >= 1 and empid <= 5; 2.尽量SQL不要用小写字母,都用大写字母 3.能用索引就用索引,其作用就相当于告诉数据库直接从哪里取数据就可以了,不用全部查找一遍 4.使用group by时,最后先把不用的数据排除掉,可以先在where 条件里面排除无关数据,在group by 5.in 和 not in ,换为 Exists 和 not Exists 6.当进行数据需要多表关联时,最好使用别名 7.复杂的SQL往往会消耗大量的资源,能用函数解决,就用函数 8.程序进行select 时,后面都要commit,这会释放占用的资源 9.也是最重要的,不要用 select * from 【表名】 ,用select 【列名】 from 【表名】 。除非不知道表字段时测试用。 以上是我的一些经验,纯当抛砖引玉了。
顶顶顶,我有一份当时面试的数据库资料,楼主需要吗?[/quote] 需要你给吧
Royal_lr 2017-11-22
  • 打赏
  • 举报
回复
首先你得知道sql执行计划,通过执行计划判断是通过全表还是索引查找数据,然后就是sql语句不用*等一些细节,分库分表操作
爱写Bug的麦洛 2017-11-21
  • 打赏
  • 举报
回复
引用 2 楼 qq_40794696 的回复:
1.尽量不要用between .. and ... ,使用 》= 和 《= , eg: select billdate from A where empid between 1 and 5; --> select billdate from A where empid >= 1 and empid <= 5; 2.尽量SQL不要用小写字母,都用大写字母 3.能用索引就用索引,其作用就相当于告诉数据库直接从哪里取数据就可以了,不用全部查找一遍 4.使用group by时,最后先把不用的数据排除掉,可以先在where 条件里面排除无关数据,在group by 5.in 和 not in ,换为 Exists 和 not Exists 6.当进行数据需要多表关联时,最好使用别名 7.复杂的SQL往往会消耗大量的资源,能用函数解决,就用函数 8.程序进行select 时,后面都要commit,这会释放占用的资源 9.也是最重要的,不要用 select * from 【表名】 ,用select 【列名】 from 【表名】 。除非不知道表字段时测试用。 以上是我的一些经验,纯当抛砖引玉了。
顶顶顶,我有一份当时面试的数据库资料,楼主需要吗?
隐语者 2017-11-21
  • 打赏
  • 举报
回复
1.尽量不要用between .. and ... ,使用 》= 和 《= , eg: select billdate from A where empid between 1 and 5; --> select billdate from A where empid >= 1 and empid <= 5; 2.尽量SQL不要用小写字母,都用大写字母 3.能用索引就用索引,其作用就相当于告诉数据库直接从哪里取数据就可以了,不用全部查找一遍 4.使用group by时,最后先把不用的数据排除掉,可以先在where 条件里面排除无关数据,在group by 5.in 和 not in ,换为 Exists 和 not Exists 6.当进行数据需要多表关联时,最好使用别名 7.复杂的SQL往往会消耗大量的资源,能用函数解决,就用函数 8.程序进行select 时,后面都要commit,这会释放占用的资源 9.也是最重要的,不要用 select * from 【表名】 ,用select 【列名】 from 【表名】 。除非不知道表字段时测试用。 以上是我的一些经验,纯当抛砖引玉了。
李德胜1995 2017-11-21
  • 打赏
  • 举报
回复
百度谷歌。。。。。。。。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧