随笔分类 - MSSQL/MySQL/Oracle
摘要:1、统计一个数据库中每有表的记录总数可以通过执行下面的语句得到结果:select o.name,i.rows from sysobjects o,sysindexesi where o.id=i.id and o.Xtype='U' and i.indid<2 order by i.rows desc,o.name2、查看数据库或表占用空间大小可以通过调用系统存储过程等到结果(具体使用可以查看MS SQL SERVER的帮助说明)sp_spaceused该存储过程不带参数时,得到的是当前库的信息,各列含义如下:database_name:当前数据库的名称。database
阅读全文
摘要: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.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 4.应尽量避免在 where 子句中使用 or 来连接条件,否
阅读全文
摘要:第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大的几个)及相应的频率。然后再在这1000个
阅读全文
摘要:MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有。还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供了执行性能,还可以编写更安全的代码。EXEC在某些情况下会更灵活。除非您有令人信服的理由使用EXEC,否侧尽量使用sp_executesql.1.EXEC的使用 EXEC命令有两种用法,一种是执行一个存储过程,另一种是执行一个动态的批处理。以下所讲的都是第二种用法。 下面先使用EXEC演示一个例子,代码1代码 DECLARE @Ta.
阅读全文
摘要:新装的SQLSERVER2008,打开原来SQLSERVER2008中建立的表,现在想增加一些字段,在保存时提示错误,无法保存。刚开始以为是SQLSERVER2008与2005的不兼容,后来发现在SQLSERVER2008中新建的表也存在无法修改表结构,也就是无法修改字段名和增加字段名。提示是:不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了“阻止保存要求重新创建表的更改”选项。你这是因为选择了“阻止保存要求重新创建表的更改”选项。解决办法:启动MSSQLSERVER2008,选择菜单工具-〉选项-〉左侧有个设计器-〉表设计器和数据库设计器。然后去
阅读全文
摘要:关于SQL的返回值问题1.cmd.ExecuteScalar() ,返回查询(select) 第一行第一列, object类型2.cmd.ExecuteNonQuery(),返回(update,insert,delete)受影响的行数,int类型3.adapter.Fill(datatable);填充表集
阅读全文