SQL经典练习题(下)
目录
一、SQL优化建议
1.数据库表设计
2.sql编写
3.中文处理
4.其他
二、学习平台(推荐)
1、SQL语法手册,随用随查
2、SQL边学边练
一、SQL优化建议 为什么需要进行SQL优化?
在进行多表连接查询、子查询等操作的时候,由于写的SQL语句欠佳,导致的服务器执行时间太长,等待结果的时间太长。SQL的性能不仅仅需要对SQL语句本身进行,同时也要考虑在建库、建表、建索引等阶段进行。基于此,所以需要学习怎么优化SQL。
1.数据库表设计 1)选择合适的数据类型
使用可存下数据的最小的数据类型。 使用简单的数据类型,整型比字符处理开销更小,因为字符串的比较更复杂。 使用合理的字段属性长度,固定长度的表会更快。 尽可能使用not null定义字段。 尽量少用text,非用不可最好分表。 2)索引
索引是一个指向表中数据的指针。一个数据库中的索引与一本书的索引目录是非常相似的。索引可以用来提高数据库查询性能,但是不恰当的使用将导致数据库性能下降。建议仅在匹配如下某条原则时创建索引:
经常执行查询的字段。 在连接条件上创建索引,对于存在多字段连接的查询,建议在这些字段上建立组合索引。例如,select * from t1 join t2 on t1.a=t2.a and t1.b=t2.b,可以在t1表上的a,b字段上建立组合索引。 WHERE子句的过滤条件字段上(尤其是范围条件)。 在经常出现在ORDER BY、GROUP BY和DISTINCT后的字段。 2.sql编写 使用limit对查询结果的记录进行限定 避免select *,将需要查找的字段列出来 使用连接(join)来代替子查询 拆分大的delete或insert语句 可通过开启慢查询日志来找出较慢的SQL 不做列运算:SELECT id WHERE age + 1 = 10,任何对列的操作都将导致表扫描, sql语句尽可能简单:一条sql只能在一个cpu运算;大语句拆小语句,减少锁时间; OR改写成IN:OR的效率是n级别,IN的效率是log(n)级别,in的个数建议控制在200以内 不用函数和触发器,在应用程序实现 避免%xxx式查询 使用同类型进行比较 尽量避免在WHERE子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描 对于连续数值,使用BETWEEN不用IN: 列表数据不要拿全表,要使用LIMIT来分页,每页数量也不要太大 3.中文处理 openGauss数据库虽然支持定义中文表、字段名,但是不建议使用中文(sql server也支持中文)。
中文场景:
1、国人的习惯,在不熟悉的领域(机械,医疗等专业)里,英文往往并不能准确的翻译,而使用拼音或缩写也不直观。 2、在简单的、快速开法的(低成本仅供演示的)项目中,往往对数据字典没什么特别的要求,也无需考虑稳定性、迁移性等。使用中文可以方便修改逻辑结构模型,方便SQL语句设计。 3、报表展示等 优点: 1、不必考虑命名规范
2、很清晰的知道我们要操作的字段,看起来一目了然。(当然如果数据库被其他人进入也是一目了然,安全性差一点)。
3、页面显示的时候无需转换等。
缺点:
1、编写时中文的全角半角等切换太麻烦,很容易出错。 2、中文储存与英文储存有差异,一些系统视图中可能会有一些性能或者维护上的影响。 3、兼容性差,如多语言环境下、多种数据库情况下,兼容性差等。 4.其他 合理使用"分区、分表等,根据实际情况结合数据库自身技术进行。 从业务角度出发给数据库“瘦身”,如分析并下线没有实际业务意义的job;归档历史数据等。 二、学习平台(推荐) SQL 的学习是基于数据库而言的,针对不同的数据库,如hivesql、mysql、sqlserver、oracle等,除了拥有自己的私有的扩展外, 大部分都是符合SQL的标准。如下是一些SQL学习的平台和资料,建议收藏。
本文是在openGauss数据库环境上运行的,且大多数sql题有多种写法,需要根据实际业务表的情况进行最优编写,大家练习的同时可以在openGauss数据库环境上测试,同时欢迎经验分享。
1、SQL语法手册,随用随查 1)openGauss 3.0版本, 开发者指南-SQL参考
2)SQL在线教程
3)SQL Tutorial For Beginners | 1Keydata
2、SQL边学边练 1)sqlzoo: SQLZOO
2)CodeCademy: SQL Tutorial: Learn SQL For Free | Codecademy
3)sqlbolt:SQLBolt - Learn SQL - Introduction to SQL
4)w3school :SQL 教程
5)w3schools :SQL Tutorial
6)sqlteaching:SQL Teaching - The easiest tutorial to learn SQL
🍒如果您觉得博主的文章还不错或者有帮助的话,请关注一下博主,如果三连点赞评论收藏就更好啦!谢谢各位大佬给予的支持!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
从0到1设计通用数据大屏搭建平台
作者:vivo 互联网大数据团队- Wang Lei 一、前言 一直以来,许多产品平台都在尝试通过可视化搭建的手段来降低 GUI 应用的研发门槛,提高生产效率。随着我们业务的发展,数据建设的完善,用户对于数据可视化的诉求也日益增多,而数据大屏是数据可视化的其中一种展示方式,它作为大数据展示媒介的一种,被广泛运用于各种会展、公司展厅、发布会等。 相比于传统手工定制的图表与数据仪表盘,通用大屏搭建平台的出现,可以解决定制开发, 数据分散带来的应用开发、数据维护成本高等问题,通过数据采集、清洗、分析到直观实时的数据可视化展现,能够多方位、多角度、全景展现各项指标,实时监控,动态一目了然。 本文将通过敏捷BI平台的通用大屏搭建能力的实现方案,来讲解一下通用可视化搭建平台整体的设计思路。 二、快速了解可视化大屏 2.1 什么是数据可视化 从技术层面上来讲,最直观的就是前端可视化框架:Echart、Antv、Chart.js、D3.js、Vega 等,这些库都能帮我们快速把数据转换成各种形式的可视化图表。 从业务层面来讲, 其最主要的意义就在于通过数据 -> 图表组合 -> 可视化页面...
- 下一篇
实践GoF的设计模式:代理模式
摘要: 代理模式为一个对象提供一种代理以控制对该对象的访问。 本文分享自华为云社区《【Go实现】实践GoF的23种设计模式:代理模式》,作者:元闰子 。 简介 GoF 对代理模式(Proxy Pattern)的定义如下: Provide a surrogate or placeholder for another object to control access to it. 也即,代理模式为一个对象提供一种代理以控制对该对象的访问。 它是一个使用率非常高的设计模式,在现实生活中,也是很常见。比如,演唱会门票黄牛。假设你需要看一场演唱会,但官网上门票已经售罄,于是就当天到现场通过黄牛高价买了一张。在这个例子中,黄牛就相当于演唱会门票的代理,在正式渠道无法购买门票的情况下,你通过代理完成了该目标。 从演唱会门票的例子我们也能看出,使用代理模式的关键在于,当 Client 不方便直接访问一个对象时,提供一个代理对象控制该对象的访问。Client 实际上访问的是代理对象,代理对象会将 Client 的请求转给本体对象去处理。 UML 结构 场景上下文 在简单的分布式应用系统(示例代码工程)中...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块