数据库优化小技巧总结

对于数据库优化:

数据库优化的目标无非是避免磁盘I/O瓶颈、减少CPU利用率和减少资源竞争
基于第三范式的数据库表设计具有很多优点:
一是消除了冗余数据,节省了磁盘存储空间;
二是有良好的数据完整性限制,即基于主外键的参照完整限制和基于主键的实体完整性限制,这使得数据容易维护,也容易移植和更新;
三是数据的可逆性好,在做连接(Join)查询或者合并表时不遗漏、也不重复;
四是因消除了冗余数据(冗余列),在查询(Select)时每个数据页存的数据行就多,这样就有效地减少了逻辑I/O,
五是对大多数事务(Transaction)而言,运行性能好;
六是物理设计(Physical Design)的机动性较大,能满足日益增长的用户需求。

所有常用于查询中的Where子句的列
和所有用于排序的列创建索引,可以避免整表扫描或访问,在不改变表的物理结构的情况下,
直接访问特定的数据列,这样减少数据存取时间;
利用索引可以优化
或排除耗时的分类*作;把数据分散到不同的页面上,就分散了插入的数据;主键自动建立了唯一索引
,因此唯一索引也能确保数据的唯一性(即实体完整性);索引码越小,定位就越直接;新建的索引效能最好,
因此定期更新索引非常必要。

一个表只能有一个聚族索引,可有多个非聚族索引。
使用聚族索引查询数据要比使用非聚族索引快。
① 聚族索引(Clustered Index):聚族索引的数据页按物理有序储存,占用空间小。
   选择策略是,被用于Where子句的列:包括范围查询、模糊查询或高度重复的列(连续磁盘扫描);
被用于连接Join*作的列;
被用于Order by和Group by子句的列。聚族索引不利于插入*作,另外没有必要用主键建聚族索引。
② 非聚族索引(Nonclustered Index):与聚族索引相比,占用空间大,而且效率低。
    选择策略是,被用于Where子句的列:
包括范围查询、模糊查询(在没有聚族索引时)、主键或外键列、点(指针类)或小范围(返回的结果域小于整表数据的20%)查询;
被用于连接Join*作的列、主键列(范围查询);被用于Order by和Group by子句的列;需要被覆盖的列。

防范sql注入的方法无非有以下几种:

1.使用类型安全的SQL参数
  2.使用参数化输入存储过程
  3.使用参数集合与动态SQL
  4.输入滤波
  5.过滤LIKE条款的特殊字符

时间: 2024-10-29 19:08:03

数据库优化小技巧总结的相关文章

asp.net的优化小技巧收集

在页面不需要交互的情况下可以禁用ViewState 1.页面整体禁用ViewState:在顶部<%Page>中EnableViewState="false"; 2.指定控件禁用ViewState:控件的EnableViewState属性设置为false; 完全不要ViewState则把页面中的form中的runat="server"去掉(极端,后果很严重,Button等一大部分服务端控件不能用)这种情况一般用在站内搜索功能的时候,因为没去掉的时候,地址栏

一些JavaScript中的DOM的优化小技巧

在进行DOM优化时需要关注的问题有:修改DOM的时候,会引起页面的重排,重绘.因为JS是单线程执行的,那么在重排重绘的过程中可能会阻塞用户的操作.为了更好的用户体验,必须要严格控制这些操作. 一.对象集合 NodeList 当我们调用:getElementsByTagName,getElementsByName,getElementsByClassName的时候,返回的结果是一个NodeList,这个NodeList是实时的.如果你修改对应的html,那么NodeList中也会得到修改. 而且,

做OI题时的一些常用的常数优化小技巧

注意:本文所介绍的优化并不是算法上的优化,那个就非常复杂了,不同题目有不同的优化.笔者要说的只是一些实用的常数优化小技巧,很简单,虽然效果可能不那么明显,但在对时间复杂度要求十分苛刻的时候,这些小的优化对于帮助你成功卡常也是十分重要的.那么我们让切入正题吧. (1)inline放在自定义函数前 不要问为什么,加就行了!额,这个东西好像可以让你的函数有机会被计算机执行得稍微快一点,一般放在使用次数比较多的函数前,像check(),为sort()定制的CMP()等等,当然主函数前就不要放了...比如

125个提高网页可用性的优化小技巧(二)

125个提高网页可用性的优化小技巧(二) --安阳师范学院互联网+应用技术学院UI设计方向讲师 崔凯让常用功能和重要数据信息更接近用户预测用户的意图,让他们尽可能接近目标. △ 筛选出或跳至用户正在搜索的条目 △ 将用户常选项目列为默认选项△ 产品列表页上把重要数据信息展示出来很多时候用户需要像踩弹簧高跷杖一样,点击一个产品,查看信息,返回上一页,再反复操作以查看其他产品.这种设计的可用性差.应把重要信息直接放在主要页面,减少用户反复操作的次数.如果你怕这样页面会杂乱,也可以设计成鼠标悬停时显示

获取数据库字段小技巧

下面写了几条根据数据库表,获取domain中要用的数据字段sql语句. select concat( concat(column_name, concat('=', concat(concat('#{',column_name),'}') ) ),',') from information_schema.`COLUMNS` where table_schema='saas-export' and table_name='ss_company'; 以上sql语句获得的结果如id=#{id}, se

mysql优化小技巧

对mysql优化时一个综合性的技术,主要包括 a: 表的设计合理化(符合3NF) b: 添加适当索引(index) [四种: 普通索引.主键索引.唯一索引unique.全文索引] c: 分表技术(水平分割.垂直分割) d: 读写[写: update/delete/add]分离 e: 存储过程 [模块化编程,可以提高速度] f: 对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ] g: mysql服务器硬件升级 h: 定时的去清除不需要的数据,定时进行碎片整理(MyISAM)

D3D9 优化小技巧

此篇文章主要讲一些小技巧,针对前面转载的D3D9 GPU Hacks,我们可以做的一些优化. 在做延迟渲染或者其它需要深度的地方使用INTZ格式的纹理,这样可以直接对纹理进行操作,节省了显存和带宽,这样即使在前向渲染的时候也可以获取深度,有了深度信息我们就可以做很多效果,如水的柔边,水边泡沫,景深等效果. 注:以下示例代码均摘自http://developer.amd.com/wordpress/media/2012/10/Advanced-DX9-Capabilities-for-ATI-Ra

性能优化小技巧

https://developer.android.com/training/articles/perf-tips.html 这篇文章主要讲述了一些小优化,但是如果把这些小优化都结合起来的话则会提高一个app的整体性能.不过这也不代表对于性能它们会有质的改变.首当其冲是选择正确的算法和数据结构,不过它不在本篇文章的讨论范围内.你应该将本篇文章讨论的小技巧融入到编码习惯中以提示通用编码效率. 编写有效率的代码,有两个基本的原则: 不要做太多不需要你做的事 不要使用你可以不用的内存 当对一个app进

How Javascript works (Javascript工作原理) (十一) 渲染引擎及性能优化小技巧

个人总结:读完这篇文章需要20分钟,这篇文章主要讲解了浏览器中引擎的渲染机制. DOMtree       ----|   |---->  RenderTree CSSOMtree  ----| 这是 JavaScript 工作原理的第十一章. 迄今为止,之前的 JavaScript 工作原理系列文章集中于关注 JavaScript 语言本身的功能,在浏览器中的执行情况,如何优化等等. 然而,当在构建网络应用的时候,不仅仅只是编写自己运行的 JavaScript 代码.所编写的 JavaScri