免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 红豆抹茶
打印 上一主题 下一主题

【ChinaUnix社区十一周年站庆图书专题】MySQL之SQL编程(获奖名单已公布2013-1-7) [复制链接]

论坛徽章:
0
21 [报告]
发表于 2012-11-23 22:01 |只看该作者
谢谢楼主哦

论坛徽章:
0
22 [报告]
发表于 2012-11-24 08:37 |只看该作者
路过    进来看看

论坛徽章:
0
23 [报告]
发表于 2012-11-26 15:54 |只看该作者
话说,很懂sql的人要这书干嘛呢?不懂的人才需要看,不是吗?

论坛徽章:
2
操作系统版块每日发帖之星
日期:2015-08-05 06:20:0015-16赛季CBA联赛之北控
日期:2019-02-13 22:56:03
24 [报告]
发表于 2012-11-27 09:49 |只看该作者
学习了

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
25 [报告]
发表于 2012-11-27 13:04 |只看该作者
本帖最后由 gvim 于 2012-11-27 13:26 编辑

3、如何编写出简单高效并易于维护的高质量SQL代码,分享一下您的经验

这个话题标题很短,可几乎囊括了数据库编程的所有方面。个人是做业务的,数据库一般跑的是业务系统和不算复杂的统计系统。
要设计好的SQL代码其实和写C差不多,当然这里不是说的语法而是设计方式。
首先,需要熟悉语言本身,比如数据类型,内连接,外连接,排序,分组,索引,事务,函数等等,就如同C里面需要了解函数、指针、数组等基础元素。这是使用一个语言的门槛。
接着,需要熟悉语言的背景,比如数据类型的存储方式(这在大量数据中平衡访问时间、缓存等因素时考虑),连接的运算方式(这个很明晰,比如什么innner loop之类的不知道的话也就不要谈查询分析了),关系代数的理论和在SQL中的实现背景(如此这般的话才能理解为什么往往都是把排序放在最后来处理),文件系统在数据库中的实现包括索引,数据组织,blob的组织,B+树对索引的优缺点,事务日志等等等等。这个层面基本是关系代数理论层和数据库关系系统实现层之间的一个融合。类比C的话,就是要知道堆栈、各种数据结构,指针地址的运算,各种语言结构在汇编层的表示形式等内容,甚至包括cpu的访存访址,cpu cache等。
然后,继续深入的话就涉及到业务,这在SQL中主要涉及到如何设计各种关系,如何选择合适的数据类型,如何将不同的对象、实体组成满足范式和应用需求的关系表,这一步更多的是对业务的理解,对应用未来设计期望的理解和对范式的理解。比如有时候需要多留点字段,有时候可能会考虑冗余为了以后的方便,需不需要设计简单的OLAP还是把OLAP抽出来单独实施等等,这个是应用相关的东西,类比C的话自然也就是设计合理的数据结构和算法来组织数据和计算。
然后,再继续深入的话,就是优化。在个人看来算是技术中的桂冠,因为走到这一步即需要前面三步都很熟悉,又需要更深入的了解数据库系统自身的运行方式和对SQL语言的优化能力,还包括关系代数的各种等价变现。比如数据库的内存管理,各种池是怎么组织的,对小内存使用和大内存使用的管理和性能差异,SQL引擎对多表join时采用的是什么优化算法来估计访问负载比如是启发式算法的还是神经网络算法还是基因算法等等,依据关系代数的等价变换,SQL引擎可以对SQL语句在负载合理的情况下进行变形,用另一种手段来表达,比如很多人讨论的in和exist表达式在某些场合的互换。类比C的话就是精通编译器后段优化和各种应用算法的设计,知道编译器对各条语句的优化方式和优化能力,能将普通的迭代算法变形成适合并行处理的并行算法等等。

这个话题如果不限定到某一应用领域来谈高效易用的话,直接跨过表设计,有些无从谈起,因为对每种不同的设计都会有不同的SQL语句,不同的SQL语句在不同的负载下优化方式和优化结果也会不一样。晕了。

最后总结一下吧,要“编写出简单高效并易于维护的高质量SQL代码”,需要具备三要素:1,对业务的理解,2,关系理论和数据库理论的理解,3,Mysql,Oracle等数据库管理系统实现上的理解。

论坛徽章:
0
26 [报告]
发表于 2012-11-27 14:42 |只看该作者
一直在公司里做开发,有专门的DBA运维数据库,所以一直感到对数据库方面的知识不够,感觉严重偏科。

1、简述SQL语言的优点,您认为它对于MySQL数据库的应用OLAP方面起到了什么作用?
SQL的优点我认为是自然,简单,容易掌握,相当于一个数据操作的DSL。
OLAP我不是很熟悉。但是在一般的应用中,如果需要统计一些数据的时候,使用SQL是非常有用的工具,毕竟sql表达的语义非常丰富,相对与简单的kv系统来说,这是非常大的便利。因此有人想作出 前台能使用sql,后台能轻松扩展 的系统,也就不足为奇了。

2、您在日常工作中经常使用哪种图形化的查询分析器,你觉得比其他的图形化工具有什么优势?
现在使用的是 mysql workbench,优势是官方出品,而且,在 ubuntu桌面环境下,这是少有的方便工具。

3、如何编写出简单高效并易于维护的高质量SQL代码,分享一下您的经验
我的看法:
1. 熟悉mysql上sql的执行过程,但这个对于开发人员来说,难度比较大,不过一旦知道,受益无穷 —— 对高效sql的编写很有启发
2. 在涉及表结构的时候,尽量简单,不要复杂化,对未来的查询需求需要做判断,比如哪些字段应该索引,索引多少字段
3. 做好注释

论坛徽章:
0
27 [报告]
发表于 2012-11-27 17:23 |只看该作者
还是推荐大家一致使用nosql吧,简单快速高效,屌丝技术人员首选,现在装系统必备

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
28 [报告]
发表于 2012-11-29 11:16 |只看该作者
灌水的太多了  

论坛徽章:
27
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-09-18 15:24:09CU大牛徽章
日期:2013-09-18 15:24:20CU大牛徽章
日期:2013-09-18 15:24:25CU大牛徽章
日期:2013-09-18 15:24:31CU大牛徽章
日期:2013-09-18 15:24:36CU大牛徽章
日期:2013-09-18 15:24:41CU大牛徽章
日期:2013-09-18 15:24:48CU大牛徽章
日期:2013-09-18 15:24:52处女座
日期:2013-09-27 17:45:43
29 [报告]
发表于 2012-11-29 23:40 |只看该作者
1、简述SQL语言的优点,您认为它对于MySQL数据库的应用OLAP方面起到了什么作用?
答:SQL语言是关系数据库的一项事实的标准,只要学习了一套SQL语言(例如),基本上其他的数据的SQL语句都能够写出来。

2、您在日常工作中经常使用哪种图形化的查询分析器,你觉得比其他的图形化工具有什么优势?
我常用的是navicat,能够很好地表现sql语句各个表的关系

3、如何编写出简单高效并易于维护的高质量SQL代码,分享一下您的经验
答:写出简单高效并易于维护的高质量SQL代码:
  最重要的是理解 数据库运算是集合运算,任何运算最好都是用表和表运算,若是出现一行行运算比较必然是效率地下。
  多表查询时,该创建临时表就得创建临时表,不要妄想一条条做运算。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
30 [报告]
发表于 2012-12-02 13:10 |只看该作者
1、简述SQL语言的优点,您认为它对于MySQL数据库的应用OLAP方面起到了什么作用?

感觉sql 和其他语言差不多,如果只是写一条语句的话比较麻烦,写成语句块的话,就和其他语言没什么差别了。
2、您在日常工作中经常使用哪种图形化的查询分析器,你觉得比其他的图形化工具有什么优势?

没用过mysql的图形化的查询分析器。
3、如何编写出简单高效并易于维护的高质量SQL代码,分享一下您的经验
简单高效的的话,只要写成sql块,就和其他语言一样了,多看高手写的代码,然后自己模仿吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP