数据库管理员如何提高自己的数据库设计能力?
1、 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2、 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0
3、并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。
4、索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。
5、应尽可能的避免更新索引数据列,因为索引数据列的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当大的资源。若应用系统需要频繁更新索引数据列,那么需要考虑是否应将该索引建为索引。
6、尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。
7、 尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。
8、尽量使用表变量来代替临时表。如果表变量包含大量数据,请注意索引非常有限(只有主键索引)。
9、避免频繁创建和删除临时表,以减少系统表资源的消耗。
10、临时表并不是不可使用,适当地使用它们可以使某些例程更有效,例如,当需要重复引用大型表或常用表中的某个数据集时。但是,对于一次性事件,最好使用导出表。
11、在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果数据量不大,为了缓和系统表的资源,应先create table,然后insert。
12、如果使用到了临时表,在存储过程的最后务必将所有的临时表显式删除,先 truncate table ,然后 drop table ,这样可以避免系统表的较长时间锁定。
猜你喜欢内容
-
怎样提高阅读理解能力
首先,我们要对“阅读理解能力”及对四级阅读理解的具体要求作一定的了解。教学大纲要求 “较强的阅读能...
-
怎样使句子多样化
句子是由词或短语按语法规则组成,表达一个完整意思的语言单位。好的英语句子应该是结构意思正确完整,...
-
我是如何过六级的
不管四级还是六级,真题绝对重要!!!那些乱七八糟的模拟题或是其他的什么资料纯粹是浪费钱,我第一次...
-
如何充分利用好听力真题
根据听真题的不同层次,基本上,可以把听题分为以下五个阶段: 1. 初听 众所周知,听真题时的第一感觉...
-
如何进行判断和推理
在阅读中,人们首先理解的是语言的字面意义。然而,语言所表达的内容常常超过其字面意义。这就需要我们...
-
如何抓主题思想
主题思想(the Main Idea)。也称作中心思想,是作者在文章中要表达的核心内容,也是作者自始自终要说明的...
-
如何确定作者的观点或态度
一篇文章不可避免地反映了作者的观点、态度和情绪。能否正确把握作者的观点和态度也是体现阅读能力的重...
-
如何找主要事实特定细节
在文章中,作者总是要通过许多具体内容(Details)来说明、解释、证明或分析文章的主题思想。在通读全文、...
-
如何猜测词义
在阅读中,我们往往会遇到一些不认识的单词或短语,或者认识的单词在文章中有了新意义。如果这些词或短...
-
我的跨跨跨专业考研
这是本人第一次发贴。偶从hj上发掘资源供自己使用已久,今年又勉强获得读硕的机会,因此对hj上的xdjm心...





















