随笔分类 - sql
摘要:我们平常所说的索引,如果没有特别指明,都是指B+树结构组织的B-Tree索引。其中聚集索引,次要索引,覆盖索引,复合索引,前缀索引,唯一索引默认都是使用B+树索引,统称索引。当然,除了B+树这种类型的索引之外,还有哈稀索引(hash index)等。MySQL InnoDB B-Tree索引使用Tips这里主要讨论一下InnoDB B-Tree索引的使用,不提设计,只管使用。B-Tree索引主要作用于WHERE和ORDER BY子句。这里讨论的均在MySQL-Server-5.1.38测试CREATE TABLE `friends` (`ID` int(10) UNSIGNED NOT NUL
阅读全文
摘要:写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要100s(但实际上要好很多很多)。如果对之建立B-Tree索引,则只需要进行log100(10^6)=3次页面读取,最坏情况下耗时30ms。这就是索引带来的效果,很多时候,当你的应用程序进行
阅读全文
摘要:通过status命令,查看Slow queries这一项,如果值长时间>0,说明有查询执行时间过长以下是引用片段: mysql> status; -------------- mysql Ver 11.18 Distrib 3.23.58, for redhat-linux-gnu (i386) Connection id: 53 Current database: (null) Current user: root@localhost Current pager: stdout Using outfile: '' Server version: 5.0.37-lo
阅读全文
摘要:[转]http://blog.csdn.net/skyremember/archive/2009/03/05/3960687.aspx我们在数据库中使用表的时候,经常会遇到两种使用表的方法,分别就是使用临时表及表变量。在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表 临时表与永久表相似,只是它的创建是在Tempdb中,它只有在一个数据库连接结束后或者由SQL命令DROP掉,才会消失,否则就会一直存在。临时表在创建的时候都会产生SQL Server的系统..
阅读全文
摘要:核心提示:本质上没区别。只是函数有限制只能返回一个标量,而存储过程可以返回多个。并且函数是可以嵌入在SQL中使用的,可以在SELECT等SQL语句中调用,而存储过程不行。执行的本质都一样。函数限制比较多,如不能用临时表,只能用表变量等,而存储过程的限制相对就比较少。1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。3. 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。4. 当存储过程和函数被执行的
阅读全文
摘要:核心提示:学习Oracle是一个漫长艰辛的过程。如果没有兴趣,只是被迫学习,那么是很难学好的。学习到一定程度的时候,要想进一步提高,就不得不接触很多Oracle之外的东西 学习Oracle是一个漫长艰辛的过程。如果没有兴趣,只是被迫学习,那么是很难学好的。学习到一定程度的时候,要想进一步提高,就不得不接触很多Oracle之外的东西,如Unix,如网络、存储等。因此,要真的决心学好Oracle,就一定要有兴趣。有了兴趣,就会一切变得简单快乐起来。简单总结一下,那就是:兴趣、学习、实践。 如何入门是许多初学者最头疼的事情。Oracle涉及的方面太多了:SQL、管理、优化、备份恢复……那么从哪开始学
阅读全文
摘要:核心提示:查询速度慢的原因很多,常见如下几种 查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 9、返回了不必要的行和列 10、查询语句不好,没有优化 可以通过如下方法来优化查询 : 1、把数据、日志、索引放到不同的...
阅读全文
摘要:--区别主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。唯一性索引列允许空值,而主键列不允许为空值。主键列在创建时,已经默认为空值 + 唯一索引了。主键可以被其他表引用为外键,而唯一索引不能。一个表最多只能创建一个主键,但可以创建多个唯一索引。主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。--创建一张仅包含主键和唯一索引的表CREATE TABLE test(PrimaryKey VARCHAR2(20), UniqueKey
阅读全文
摘要:sql 表内容复制 insert into select语法insert into 新表(字段1,字段2,.......) select 字段1,字段2,...... from 旧表insert into table1 (field1,field2) select 'myvalue',field2 from table2
阅读全文
摘要:A,B表通过key关联的批量更新数据方法:批量修改:{update Aset A.qcye=B.qcyefrom Bwhere A.kmdm=B.kmdmand A.fmonth=B.fmonthand A.fmonth=0} 更新数据一般通过应用程序来完成,使用UPDATE语句更新记录是数据库管理员维护数据的最要手段。UPDATE语句用于更新记录的列的值,它的语法比较复杂,本节将详细讲述该语句的使用。UPDATE:修改表中的数据行部分语法: UPDATE { table_name | view_name } SET { column_name={ ex...
阅读全文
浙公网安备 33010602011771号