让数据库变快的10个建议

合集下载

数据库工程师知识点

数据库工程师知识点

数据库工程师知识点一、知识概述《数据库工程师知识点》①基本定义:数据库工程师就是专门搞数据库相关工作的人。

数据库呢,简单说就像一个超级大仓库,用来存放各种各样的数据,像公司客户的信息、商品的库存数量这些。

②重要程度:在整个信息科技领域的作用可太大了。

企业要靠它来管理各种数据资料,要是没了数据库,公司很多业务就乱套了,就像家里突然找不到东西放哪里了一样。

③前置知识:得先懂一些基本的计算机知识,像电脑怎么操作,文件怎么存放这些。

还得有点数学逻辑思维,因为数据库里很多设计和操作是需要逻辑来支撑的。

④应用价值:在实际生活中,银行存钱取钱时的数据记录就是靠数据库管理。

电商平台的商品信息、订单信息也都存在数据库里,方便随时查询和更新。

二、知识体系①知识图谱:数据库工程师知识点涵盖了从数据库的基础概念,到数据库设计,再到数据查询和管理等一系列内容。

它处于计算机科学和信息管理交叉的位置。

②关联知识:和计算机网络知识也有关,不然数据怎么传输到数据库里呢。

和操作系统知识也脱不开,因为数据库得运行在操作系统之上。

③重难点分析:掌握数据库的设计范式挺难的。

这就好比盖房子要按照一定的规则一样,数据库表的设计要符合范式才能避免数据冗余等问题。

关键点就是要设计出合理的数据库架构。

④考点分析:在考试中相当重要。

考查方式可以是让你根据需求设计数据库结构,或者根据给出的数据库结构进行查询语句的编写等。

三、详细讲解【理论概念类】①概念辨析:数据库管理系统(DBMS),简单理解就是负责管理数据库的软件系统,就像仓库管理员一样对数据库里的数据做各种管理操作。

②特征分析:数据的独立性就是一大特点,数据的存储和使用是分开的。

就好比你把东西放在仓库某个位置,但是你不用操心找东西的具体方法,仓库管理系统会搞定。

还有数据的安全性,例如设置不同的用户权限来访问不同的数据。

③分类说明:关系型数据库,就像表格一样把数据存起来。

像MySQL 就是典型的关系型数据库。

toad使用教程

toad使用教程

一、toad功能综述在oracle 应用程序的开发过程中,访问数据库对象和编写sql程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多sql脚本才能完成的。

quest software为此提供了高效的oracle应用开发工具-toad(tools of oracle application developers)。

在toad的新版本中,还加入了dba模块,可以帮助dba完成许多日常管理工作。

它最大的特点就是简单易用,访问速度快。

使用toad,我们可以通过一个图形化的用户界面快速访问数据库,完成复杂的sql和pl/sql代码编辑和测试工作。

toad由oracle开发专家专门为开发人员而设计,是一个功能强大、结构紧凑的专业化pl/sql开发环境。

toad 主要具有如下特点:模式浏览:模式浏览功能可以让我们快速访问数据字典,浏览数据库中的表、索引、存储过程。

toad 提供对数据库的快速访问,使用极为方便,用户界面简洁,结构安排合理。

当我们点击一个单独的数据库对象,toad立即显示此对象的详细信息。

例如,当我们点一个数据库的表,所有和此表相关的索引、约束、存储过程、sql语句以及和其他表的相互引用关系都在同一界面显示出来。

为了简化操作,用户可以在浏览窗口操作数据库对象。

sql 编辑器:sql 编辑器的主要功能是编辑、运行和调整sql语句。

toad 的高级编辑窗口包括众多的特性来提高开发人员编写sql语句的产品化程度。

例如,简单地生成代码模板,在编写sql前自动发现包的内容和列的名字等等。

sql 编辑器包括一个编辑窗口和运行结果窗口,允许开发人员在编辑的过程中测试运行结果。

sql编辑器中不仅包括标准的编辑命令,也包括一些增强的功能,如快速查询表中的字段、将sql语句的内容格式化等等。

这个窗口可以处理大到4gb 的内容,对大的开发项目来说非常有用。

便捷的书签可以让开发人员非常容易地找到相关位置。

神通数据库-快速入门指南

神通数据库-快速入门指南

神通数据库快速入门指南版本天津神舟通用数据技术有限公司2010年12月版权声明神通数据库是天津神舟通用数据技术有限公司开发的数据库管理系统软件产品。

神通数据库的版权归天津神舟通用数据技术有限公司,任何侵犯版权的行为将追究法律责任。

《神通数据库快速入门指南》的版权归天津神舟通用数据技术有限公司所有。

未经天津神舟通用数据技术有限公司的书面准许,不得将本手册的任何部分以任何形式、任何手段(电子或机械的,包括照相、复制和录制)或为任何目的进行复制、扩散等。

(c)Copyright 2010 天津神舟通用数据技术有限公司。

版权所有,翻制必究。

阅读指南〖阅读对象〗本手册是专为使用神通数据库管理系统的用户编写的。

用户在使用该产品前应当认真阅读本手册,以便快速熟悉本软件的安装使用。

〖内容简介〗本手册介绍了如何安装使用神通数据库,以及在使用该产品时可能会遇到的问题及其相应的解决方法,目的是让用户对神通数据库的使用有一个快速的了解,方便用户熟悉本软件。

概述章节概述了神通数据库产品,介绍了神通数据库管理系统要求的硬件、操作系统资源及其运行环境。

错误!未找到引用源。

章节介绍了如何进行产品组件的安装,并使用大量的图片进行了说明。

其余章节指导用户如何使用神通数据库,并列举了一些注意事项和常见问题解答。

欲获取更多有关神通数据库信息,请参考错误!未找到引用源。

章节,与我公司联系。

〖相关文档〗使用本手册时可以参考神通数据库联机帮助文档。

〖手册约定〗本手册遵循以下约定:所有标题均使用黑体字。

如果标题后跟有“【条件】”字样,说明该标题下正文所要求的内容只是在一定条件下必须得引起注意的。

【注意】:提醒读者注意那些需要注意的事项。

【警告】:强烈提醒读者注意某些事项,以免造成严重后果。

【提示】:提供给读者一些实用的操作技巧。

目录〖阅读对象〗 .................................................. 错误!未定义书签。

MySQL数据库开发的三十六条军规-石展

MySQL数据库开发的三十六条军规-石展

避免负向查询和% 前缀模糊查询
• 避免负向查询
NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、 NOT LIKE等
• 避免 % 前缀模糊查询
B+ Tree 使用不了索引 导致全表扫描
• 举例
MySQL> select * from post WHERE title like ‘北京%' ; 298 rows in set (0.01 sec) MySQL> select * from post WHERE title like '%北京%' ; 572 rows in set (3.27 sec)
• 注意控制IN的个数,建议n小于200 • 举例
Select * from opp WHERE phone=‘12347856' or phone=‘42242233' \G Select * from opp WHERE phone in ('12347856' , '42242233')
改写OR为UNION
• 单表多少字段合适? • 单表1G体积 500W行评估
顺序读1G文件需N秒 单行不超过200Byte 单表不超50个纯INT字段 单表不超20个CHAR(10)字段
• 单表字段数上限控制在20~50个
平衡范式与冗余
• 平衡是门艺术
严格遵循三大范式?
效率优先、提升性能
没有绝对的对与错 适当时牺牲范式、加入冗余 但会增加代码复杂度
• 不同字段,将or改为union
• 减少对不同字段进行 "or" 查询 • Merge index往往很弱智 • 如果有足够信心:set global optimizer_switch='index_merge=off';

Java中性能优化的35种方法汇总

Java中性能优化的35种方法汇总

Java中性能优化的35种⽅法汇总前⾔对程序员们来说,代码优化是⼀个很重要的课题。

可能有些⼈觉得没⽤,⼀些细⼩的地⽅有什么好修改的,改与不改对于代码的运⾏效率有什么影响呢?这个问题我是这么考虑的,就像⼤海⾥⾯的鲸鱼⼀样,它吃⼀条⼩虾⽶有⽤吗?没⽤,但是,吃的⼩虾⽶⼀多之后,鲸鱼就被喂饱了。

代码优化也是⼀样,如果项⽬着眼于尽快⽆BUG上线,那么此时可以抓⼤放⼩,代码的细节可以不精打细磨;但是如果有⾜够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,⼀个⼀个细⼩的优化点累积起来,对于代码的运⾏效率绝对是有提升的。

代码优化的⽬标是:1、减⼩代码的体积2、提⾼代码运⾏的效率代码优化细节1、尽量指定类、⽅法的final修饰符带有final修饰符的类是不可派⽣的。

在Java核⼼API中,有许多应⽤final的例⼦,例如ng.String,整个类都是final的。

为类指定final修饰符可以让类不可以被继承,为⽅法指定final修饰符可以让⽅法不可以被重写。

如果指定了⼀个类为final,则该类所有的⽅法都是final的。

Java编译器会寻找机会内联所有的final⽅法,内联对于提升Java运⾏效率作⽤重⼤,具体参见Java 运⾏期优化。

此举能够使性能平均提⾼50%。

2、尽量重⽤对象特别是String对象的使⽤,出现字符串连接时应该使⽤StringBuilder/StringBuffer代替。

由于Java虚拟机不仅要花时间⽣成对象,以后可能还需要花时间对这些对象进⾏垃圾回收和处理,因此,⽣成过多的对象将会给程序的性能带来很⼤的影响。

3、尽可能使⽤局部变量调⽤⽅法时传递的参数以及在调⽤中创建的临时变量都保存在栈中速度较快,其他变量,如静态变量、实例变量等,都在堆中创建,速度较慢。

另外,栈中创建的变量,随着⽅法的运⾏结束,这些内容就没了,不需要额外的垃圾回收。

4、及时关闭流Java编程过程中,进⾏数据库连接、I/O流操作时务必⼩⼼,在使⽤完毕后,及时关闭以释放资源。

如何让UbuntuLinux更快的技巧

如何让UbuntuLinux更快的技巧

如何让Ubuntu Linux更快的技巧一些实际的加速 Ubuntu Linux的技巧。

这里的技巧对于大多数版本的Ubuntu 是有效的,也可以应用于 Linux Mint 以及其他的基于 Ubuntu 的发行版。

也许你经历过使用 Ubuntu 一段时间后系统开始运行缓慢的情况。

在这篇文章里,我们将看到几项调整以及使 Ubuntu 运行更快的窍门。

在我们了解如何提升 Ubuntu 的总体系统表现之前,首先让我们思考为什么系统逐渐变慢。

这个问题可能有很多原因。

也许你有一台只有基础配置的简陋的电脑;也许你安装了一些在启动时即耗尽资源的应用。

事实上原因无穷无尽。

这里我列出一些能够帮助你稍微加速 Ubuntu 的小调整。

也有一些你能够采用以获取一个更流畅、有所提升的系统表现的经验。

你可以选择遵循全部或部分的建议。

将各项调整一点一点的结合就能给你一个更流畅、更迅捷快速的Ubuntu。

使 Ubuntu 更快的技巧我在一个较老版本的 Ubuntu 上使用了这些调整,但是我相信其他的Ubuntu 版本以及其他的例如 Linux Mint、 Elementary OS Luna 等基 Ubuntu 的 Linux 版本也是同样适用的。

1、减少默认的 grub 载入时间Grub 给你 10 秒的时间以让你在多系统启动项或恢复模式之间改变。

对我而言,它是多余的。

它也意味着你将不得不坐在电脑旁,敲下回车键以尽可能快的启动进入 Ubuntu。

这花了一点时间,不是吗?第一个技巧便是改变这个启动时间。

如果你使用图形工具更舒适,阅读这篇文章来使用 Grub 定制器改变 grub 时间以及启动顺序。

如果更倾向于命令行,你可以简单地使用以下的命令来打开 grub 配置:sudo gedit /etc/default/grub &并且将 GRUB_TI MEOUT=10 改为 GRUB_TIMEOUT=2。

这将改变启动时间为 2 秒。

高级软考中的数据库缓存知识点

高级软考中的数据库缓存知识点一、知识概述《数据库缓存知识点》①基本定义:数据库缓存啊,简单说就是在数据库系统里加个临时存放数据的地方。

就好比你家有个大仓库(数据库),平时拿东西都从仓库拿,但是有些东西你经常用,就专门在门口弄个小橱柜(缓存)放着,下次用就直接从小橱柜拿,这样更快。

②重要程度:在高级软考涉及数据库这块那是相当重要的。

提高数据库的读取效率就靠它呢,能让系统反应更快,特别是在处理大量数据请求的时候。

③前置知识:得先了解数据库的基本结构,像表啊、字段啊之类的,还得懂一点数据存储的原理,要不然这缓存是怎么存数据怎么取数据你都搞不明白。

④应用价值:像电商网站在大促销活动的时候,有特别多的用户查看商品信息。

这时候利用数据库缓存,就不用每次都从数据库里去查商品信息,直接从缓存拿数据给用户看,速度超快的。

二、知识体系①知识图谱:在高级软考有关数据库的架构知识体系里,它处于优化读取性能这个重要分支上。

②关联知识:和数据库索引关系就很紧密。

索引有点像书本的目录,让查询能快速定位,而缓存则是把查到的数据缓存起来下次用。

还和数据库事务有关呢,多个操作同时对缓存和数据库进行更新的时候,要保证数据的一致性。

③重难点分析:掌握的难点在于搞清楚什么时候数据该存进缓存、什么时候该更新缓存和数据库的同步问题。

重点就是理解缓存如何提高数据库操作效率的。

④考点分析:在考试里重要性挺高的。

考查方式可能是给个数据读写场景问你如何利用缓存优化,或者叫你分析缓存策略对系统性能的影响。

三、详细讲解【理论概念类】①概念辨析:数据库缓存的核心就是临时存储经常访问的数据副本。

打个比方,网页上的热门文章内容查询很多,就可以把文章内容数据副本存到缓存里,下次有人再查同一篇文章,直接从缓存读取就行。

②特征分析:- 快速读取,因为存的数据结果已经是处理好或者查好的成品了,读的时候当然快。

比如查一个用户的基本资料,缓存里有直接拿,比再从数据库表一条条找快多了。

SQL 数据库文件超级大而且增长速度过快的解决办法

SQL 数据库文件超级大,而且增长速度过快!(2008-09-05 13:50:29)目前一客户的数据库文件(.MDF)占用空间超过有48G,切增长速度很快。

已经对日志文件进行了压缩。

在查询分析器中用exec sp_spaceused语句进行查询,输出结果如下:(头疼的问题)database_name database_size unallocated_space NSMIS48770.00M1370.97 MBreserved data index_size unused 48504160 KB7017272 KB270776 KB41216112 KB--------------------------------------------------------------------------------------1、用BACKUP LOG database WITH NO_LOG清除日志把数据库属性中的故障还原模型改为“简单”可以大大减慢日志增长的速度。

如果把还原模型调到简单,这样就不支持时间点还原了,但是日志文件会很小,如果数据比较重要推荐还是把数据库的还原模型调为完全用BACKUP LOG database WITH NO_LOG命名后,会截断不活动日志,不减小物理日志文件的大小,但逻辑日志会减小,收缩数据库后会把不活动虚拟日志删除来释放空间,不会损坏数据。

如果日志被截断并收缩数据库后,就不能直接用最近的一个全库备份做时间点还原,建议立即备份数据库,以防万一。

2、sql server运行中,是否能删除主数据库事务日志文件步骤如下:(1)、分离数据库企业管理器--数据库--右击你要删除日志的数据库--所有任务--分离数据库(2)、然后删除日志文件(3)、然后再附加数据库企业管理器--数据库--右击数据库--所有任务--附加数据库这时候只附加。

mdf就可以了。

3、压缩SQL数据库及日志的详细方法SQL Server 2000基础教程——压缩数据库数据库在使用一段时间后,时常会出现因数据删除而造成数据库中空闲空间太多的情况,这时就需要减少分配给数据库文件和事务日志文件的磁盘空间,以免浪费磁盘空间。

Oracle数据库性能优化与案例分析

技术创新,变革未来
Oracle数据库性能优化与案例分析
性能优化探讨
• 原因:为什么? • 慢(响应时间) • 慢(吞吐量)
性能优化探讨
• 目的:为了什么? • 快(响应时间) • 快(吞吐量)
性能优化之案例分析
• 案例之方法论 • 案例之登录访问 • 案例之资源 • 案例之锁
性能优化方法论发展
• 登录输入指标测量 • Logons:= EndSnap. logons cumulative– StartSnap. logons
cumulative。 • Logons Per Second:= Logons / TimeInterval
案例之登录访问
登录输出指标测量:
Logon Response Time:= Network Response Time * 10 + Native TCP Logon :=Network Response Time * 10 + Listener Response Time + Native IPC Logon Time 。
案例之登录访问
• 例:

某医院HIS业务系统的账户登录操作异常缓慢,部分情况下
甚至会出现长时间的卡壳情况,业务影响主要发生在每天早上
的上班时刻。
案例之登录访问
优化过程: • 账户登录过程一般涉及到在账户表格以及对应日志表格上的冲
突,比如Buffer busy waits或者TX lock。AWR未体现该特征。 • AWR报告显示connection management call elapsed time时间偏长
成功率:98% 高 失败率:2% 低
失败人数:500*2%=10

Toad_使用简明手册

一、Toad功能综述在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的。

Quest Software 为此提供了高效的Oracle应用开发工具-Toad(Tools of Oracle Application Developers)。

在Toad的新版本中,还加入了DBA模块,可以帮助DBA完成许多日常管理工作。

它最大的特点就是简单易用,访问速度快。

使用Toad,我们可以通过一个图形化的用户界面快速访问数据库,完成复杂的SQL和PL/SQL代码编辑和测试工作。

Toad由Oracle开发专家专门为开发人员而设计,是一个功能强大、结构紧凑的专业化PL/SQL开发环境。

Toad 主要具有如下特点:模式浏览:模式浏览功能可以让我们快速访问数据字典,浏览数据库中的表、索引、存储过程。

Toad 提供对数据库的快速访问,使用极为方便,用户界面简洁,结构安排合理。

当我们点击一个单独的数据库对象,Toad立即显示此对象的详细信息。

例如,当我们点一个数据库的表,所有和此表相关的索引、约束、存储过程、SQL语句以及和其他表的相互引用关系都在同一界面显示出来。

为了简化操作,用户可以在浏览窗口操作数据库对象。

SQL 编辑器:SQL 编辑器的主要功能是编辑、运行和调整SQL语句。

TOAD 的高级编辑窗口包括众多的特性来提高开发人员编写SQL语句的产品化程度。

例如,简单地生成代码模板,在编写SQL 前自动发现包的内容和列的名字等等。

SQL编辑器包括一个编辑窗口和运行结果窗口,允许开发人员在编辑的过程中测试运行结果。

SQL编辑器中不仅包括标准的编辑命令,也包括一些增强的功能,如快速查询表中的字段、将SQL语句的内容格式化等等。

这个窗口可以处理大到4GB 的内容,对大的开发项目来说非常有用。

便捷的书签可以让开发人员非常容易地找到相关位置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

让数据库变快的10个建议让数据库变快的10个建议大多数网站的内容都存在数据库里,用户通过请求来访问内容。

数据库非常的快,有许多技巧能让你优化数据库的速度,使你不浪费服务器的资源。

在这篇文章中,我收录了十个优化数据库速度的技巧。

AD:大多数网站的内容都存在数据库里,用户通过请求来访问内容。

数据库非常的快,有许多技巧能让你优化数据库的速度,使你不浪费服务器的资源。

在这篇文章中,我收录了十个优化数据库速度的技巧。

0. 小心设计数据库第一个技巧也许看来理所当然,但事实上大部分数据库的问题都来自于设计不好的数据库结构。

譬如我曾经遇见过将客户端信息和支付信息储存在同一个数据库列中的例子。

对于系统和用数据库的开发者来说,这很糟糕。

新建数据库时,应当将信息储存在不同的表里,采用标准的命名方式,并采用主键。

来源: /sql/database-administration/ten-common-dat abase-design-mistakes/1. 清楚你需要优化的地方如果你想优化某个查询语句,清楚的知道这个语句的结果是非常有帮助的。

采用EXPLAIN语句,你将获得很多有用的信息,下面来看个例子:1. EXPLAIN SELECT * FROM ref_table,other_table WHERE ref_table.key_column=other_table.column;来源: /doc/refman/5.0/en/using-explain.html2. 最快的查询语句…是那些你没发送的语句每次你向数据库发送一条语句,你都会用掉很多服务器资源。

所以在很高流量的网站中,最好的方法是将你的查询语句缓存起来。

有许多种缓存语句的方法,下面列出了几个:AdoDB: AdoDB是一个PHP的数据库简化库。

使用它,你可以选用不同的数据库系统(MySQL, PostGreSQL, Interbase等等),而且它就是为了速度而设计的。

AdoDB提供了简单但强大的缓存系统。

还有,AdoDB拥有BSD许可,你可以在你的项目中免费使用它。

对于商业化的项目,它也有LGPL许可。

Memcached:Memcached是一种分布式内存缓存系统,它可以减轻数据库的负载,来加速基于动态数据库的网站。

CSQL Cache: CSQL缓存是一个开源的数据缓存架构。

我没有试过它,但它看起来非常的棒。

3. 不要select你不需要的获取想要的数据,一种非常常见的方式就是采用*字符,这会列出所有的列。

1. SELECT * FROM wp_posts;然而,你应该仅列出你需要的列,如下所示。

如果在一个非常小型的网站,譬如,一分钟一个用户访问,可能没有什么分别。

然而如果像Cats Who Code这样大流量的网站,这就为数据库省了很多事。

1. SELECT title, excerpt, author FROM wp_posts;4. 采用LIMIT仅获得某个特定行数的数据是非常常见的。

譬如博客每页只显示十篇文章。

这时,你应该使用LIMIT,来限定你想选定的数据的行数。

如果没有LIMIT,表有100,000行数据,你将会遍历所有的行数,这对于服务器来说是不必要的负担。

1. SELECT title, excerpt, author FROM wp_posts LIMIT 10;5. 避免循环中的查询当在PHP中使用SQL时,可以将SQL放在循环语句中。

但这么做给你的数据库增加了负担。

下面的例子说明了“在循环语句中嵌套查询语句”的问题:1. foreach ($display_order as $id => $ordinal) {2. $sql = "UPDATE categories SET display_order = $ordinal WHERE id = $id";3. mysql_query($sql);4. }你可以这么做:1. UPDATE categories2. SET display_order = CASE id3. WHEN 1 THEN 34. WHEN 2 THEN 45. WHEN 3 THEN 56. END7. WHERE id IN (1,2,3)来源: /articles/sql/update-multiple-rows-with-differe nt-values-and-a-single-sql-query/6. 采用join来替换子查询As a programmer, subqueries are something that you can be tempted to use and abuse. Subqueries, as show below, can be very useful:程序员可能会喜欢用子查询,甚至滥用。

下面的子查询非常有用:1. SELECT a.id,2. (SELECT MAX(created)3. FROM posts4. WHERE author_id = a.id)5. AS latest_post FROM authors a虽然子查询很有用,但join语句可以替换它,join语句执行起来更快。

1. SELECT a.id, MAX(p.created) AS latest_post2. FROM authors a3. INNER JOIN posts p4. ON (a.id = p.author_id)5. GROUP BY a.id来源: /articles/10-tips-for-optimizing-mysql-queries-that-dont-s uck/7. 小心使用通配符通配符非常好用,在搜索数据的时候可以用通配符来代替一个或多个字符。

我不是说不能用,而是,应该小心使用,并且不要使用全词通配符(full wildcard),前缀通配符或后置通配符可以完成相同的任务。

事实上,在百万数量级的数据上采用全词通配符来搜索会让你的数据库当机。

1. #Full wildcard2. SELECT * FROM TABLE WHERE COLUMN LIKE '%hello%';3. #Postfix wildcard4. SELECT * FROM TABLE WHERE COLUMN LIKE 'hello%';5. #Prefix wildcard6. SELECT * FROM TABLE WHERE COLUMN LIKE '%hello';来源: /useful-information/ways-optimize-sql-queries/ 8. 采用UNION来代替OR下面的例子采用OR语句来:1. SELECT * FROM a, b WHERE a.p = b.q or a.x = b.y;UNION语句,你可以将2个或更多select语句的结果拼在一起。

下面的例子返回的结果同上面的一样,但是速度要快些:1. SELECT * FROM a, b WHERE a.p = b.q2. UNION3. SELECT * FROM a, b WHERE a.x = b.y来源: /optimsql.htm9. 使用索引数据库索引和你在图书馆中见到的索引类似:能让你更快速的获取想要的信息,正如图书馆中的索引能让读者更快的找到想要的书一样。

可以在一个列上创建索引,也可以在多个列上创建。

索引是一种数据结构,它将表中的一列或多列的值以特定的顺序组织起来。

下面的语句在Product表的Model列上创建索引。

这个索引的名字叫作idxModel 1. CREATE INDEX idxModel ON Product (Model);0. 小心设计数据库第一个技巧也许看来理所当然,但事实上大部分数据库的问题都来自于设计不好的数据库结构。

譬如我曾经遇见过将客户端信息和支付信息储存在同一个数据库列中的例子。

对于系统和用数据库的开发者来说,这很糟糕。

新建数据库时,应当将信息储存在不同的表里,采用标准的命名方式,并采用主键。

来源: /sql/database-administration/ten-common-dat abase-design-mistakes/1. 清楚你需要优化的地方如果你想优化某个查询语句,清楚的知道这个语句的结果是非常有帮助的。

采用EXPLAIN语句,你将获得很多有用的信息,下面来看个例子:2. EXPLAIN SELECT * FROM ref_table,other_table WHERE ref_table.key_column=other_table.column;来源: /doc/refman/5.0/en/using-explain.html2. 最快的查询语句…是那些你没发送的语句每次你向数据库发送一条语句,你都会用掉很多服务器资源。

所以在很高流量的网站中,最好的方法是将你的查询语句缓存起来。

有许多种缓存语句的方法,下面列出了几个:AdoDB: AdoDB是一个PHP的数据库简化库。

使用它,你可以选用不同的数据库系统(MySQL, PostGreSQL, Interbase等等),而且它就是为了速度而设计的。

AdoDB提供了简单但强大的缓存系统。

还有,AdoDB拥有BSD许可,你可以在你的项目中免费使用它。

对于商业化的项目,它也有LGPL许可。

Memcached:Memcached是一种分布式内存缓存系统,它可以减轻数据库的负载,来加速基于动态数据库的网站。

CSQL Cache: CSQL缓存是一个开源的数据缓存架构。

我没有试过它,但它看起来非常的棒。

3. 不要select你不需要的获取想要的数据,一种非常常见的方式就是采用*字符,这会列出所有的列。

2. SELECT * FROM wp_posts;然而,你应该仅列出你需要的列,如下所示。

如果在一个非常小型的网站,譬如,一分钟一个用户访问,可能没有什么分别。

然而如果像Cats Who Code这样大流量的网站,这就为数据库省了很多事。

2. SELECT title, excerpt, author FROM wp_posts;4. 采用LIMIT仅获得某个特定行数的数据是非常常见的。

譬如博客每页只显示十篇文章。

这时,你应该使用LIMIT,来限定你想选定的数据的行数。

如果没有LIMIT,表有100,000行数据,你将会遍历所有的行数,这对于服务器来说是不必要的负担。

2. SELECT title, excerpt, author FROM wp_posts LIMIT 10;5. 避免循环中的查询当在PHP中使用SQL时,可以将SQL放在循环语句中。

相关文档
最新文档