
数据库
Dogfish
Fake Coldfusion Expert.
展开
-
mysql在select语句的自动增长字段。
<br />自己闲着弄的,写下来记录一下。<br /> <br />网上很多都是2个语句的。我自己想一个语句。测试后,在我的机器上运行成功。<br /> <br /> <br />首先是网上查到的。<br /> <br />select @a:=1<br />;<br />select @a:=@a+1 as rowid, invoiceid from invoices where invoiceid<1000 and price <20<br /> <br /> <br /> <br />我自己想一句写出原创 2011-04-30 11:47:00 · 7253 阅读 · 0 评论 -
在MSSQL里把字串转成table变量
今天要在mssql里处理一串Email地址。以分号分开的。以前自己写过一个split函数的。这次想使用xml来处理。mssql 2000和mssql 2005数据库对xml的支持有些不同。至少mssql 2005的功能多些。 --这个代码在MSSQL 2005测试成功。最后生成一个表变量。使用者可以把表变量转成需要的数据declare @cc varchar(1000)set @原创 2012-12-08 15:22:56 · 1545 阅读 · 0 评论 -
ODBC链接SQL Express 2014
SQL Express链接ODBC的时候有一点小问题。原因主要在yu原创 2014-10-26 08:06:34 · 2281 阅读 · 1 评论 -
限制MSSQL Express的内存使用。
在虚拟机安装了一个MSSQL Express 2012,效果不错。原创 2014-11-03 13:33:26 · 2297 阅读 · 0 评论 -
MSSQL强制取消某个索引的使用
MSSQL数据库引擎会自动优化SQL语句,自动选数据库引擎认为最好的索引来运行SQL语句。当然,大部分时候由SQL引擎优化没有问题,只是有时候它也会选出一个不是最优的索引。所以有必须人为干预一下SQL引擎的优化,把SQL引擎的优化导向你要的索引。SQL例子:select * from shoppingcart where customerid =112233 and orderdate>=原创 2015-01-30 14:47:42 · 1187 阅读 · 0 评论 -
MSSQL里,替代cursor的一种方法。
在MSSQL里,我们可以使用Cursor来实现数量循环处理。但是Cursor有一个问题,就是效率慢。当然,如果机器性能很好的服务器就例外。我在这里介绍一个简单的方法,可以替代Cursor。在简单的,处理数据不是很多的情况下,应该可行的。我自己的程序里,间中会使用到。一下用一个例子来解释:declare @i int -- 要循环的行数declare @id intdecl原创 2014-12-07 09:22:01 · 1891 阅读 · 0 评论 -
MSSQL XML使用(三):把字段名作为XML的节点
在第一篇的时候,如果使用For XML Auto,返回的XML里,所以的字段是一个节点的属性。我们如何把字段变成节点呢?这就要使用For XML Path('每组节点的父节点名字')。测试table: Users1useridint2firstname varchar(20)3lastnamevarchar(20)原创 2015-02-01 15:49:59 · 1441 阅读 · 0 评论 -
MSSQL XML使用(一):由简单的select语句Auto 生产XML
MSSQL支持由select语句生产XML,语句非常简单,就是在select语句加上一个for XML就可以。语法相当简单:select * from tablename for xml autoFor XML把select的结果变成XML返回客户端。AUTO模式就是自动把用属性的形式把XML返回客户端。如:测试table: Users1us原创 2014-12-26 04:24:44 · 1532 阅读 · 0 评论 -
MSSQL语句的性能调试(一)使用OR还是Exists
在写SQL语句的时候,经常会使用OR语句。OR语句的性能不是很好,经常让表的索引失去作用。最近调试一个语句,里面有一个搜索条件是A=1 or B=1 or C=1。 其中的A、B、C是同一个表里面的字段名。因为使用了OR语句,结果语句的性能不是很快。原来的语句:SELECT * FROM Users Where isActive=1 AND (A=1 OR B=1 OR C=原创 2015-03-10 11:41:07 · 1909 阅读 · 0 评论 -
MSSQL语句的性能调试(二)使用IN和INNER JOIN
IN在MSSQL语句里是表示在一组数据里寻找。如果那一组数据的量很大,IN的性能就会很差。另外,如果要比较的数据量很多,IN的性能也不是很好。当IN的性能出现问题的时候,而相对的语句能用INNER JOIN来实现,可以尝试一下还提高语句的性能。原来的SQL语句:SELECT * FROM Invoices WHERE UserId IN (SELECT UserId FROM Us原创 2015-03-10 14:40:38 · 1078 阅读 · 0 评论 -
在Windows 2003上安装MyODBC 5.2版本
最近要修复一个ASP+MYSQL+Windows 2003服务器的程序。要在Windows 2003上安装My ODBC Driver。但是一直安装不了,安装到最后的时候就会出现以下的错误。错误的英文信息是:Error 1918. Error Installing ODBC driver MySQL ODBC 5.2 ANSI Driver, ODBC error 13: Coul原创 2015-05-01 05:05:46 · 1934 阅读 · 0 评论 -
Microsoft OLE DB Provider for ODBC Drivers error '80004005' Can't connect to MySQL server的一种原因
最近修理一个ASP+MySQL的程序。原来的程序员已经离职,所以修理这个程序的任务我接了。这次的错误是一个很普通的错误,我google了好长时间也没有得到答案,最好慢慢分析才把这个错误搞定。错误的症状:程序随机出现一下的错误Microsoft OLE DB Provider for ODBC Drivers error '80004005'[MySQL][ODBC原创 2015-05-13 14:18:03 · 4845 阅读 · 0 评论 -
MSSQL语句的性能调试(三)使用JOIN,ON条件的优化。
当SELECT数据的时候,有时候会JOIN超过2个表的。这个时候,如果JOIN的链接上写得不好,会有性能上的区别。这里简单以例子来说明一下。在例子里,我介绍有3个表A,B和C,三个表里都有一个字段InvoiceID. InvoiceID 在A里是主键。代码一:SELECT A.* FROM AINNER JOIN B ON B.invoiceId = A.invoiceI原创 2015-05-29 15:32:00 · 2793 阅读 · 0 评论 -
SQL小代码:加一个元素去一个List
简单写个代码,为一个List增加一个元素。主要是分隔符的出来。这里的小程序,有一定的限制。不是很通用。DECLARE @List Varchar(MAX) -- List变量,就是一个以分隔符号分开的字符串。DECLARE @Delimeter Varchar(1) -- 分隔符--参数设置SELECT @Delimiter = ',', @List='' --初始化,以逗号分割--原创 2012-12-07 15:50:18 · 803 阅读 · 0 评论 -
MSSQL的index问题 - 碎片(Fragment)太多
这里简单叙述一下。我们公司使用一个程序,那个程序用到MSSQL 2005。这个程序不知道出于什么原因,删除数据十分频繁,导致索引出现大量的碎片(Fragment)。主要的几个表的碎片率达到90%以上。因为这些碎片,程序越来越慢。后来把所有的主要的表相关的index重新做一次,速度很快就回到原来的水平了。这里, 我不完全肯定是index的碎片造成的速度慢,也有可能是index坏了。但是把原创 2012-11-28 02:32:25 · 1103 阅读 · 0 评论 -
全文搜索在MSSQL数据库的复制产生的问题
最近做了一件让数据库出现问题的事。有全文搜索产生的。 最近的一个新任务是建立一个新网站,把一个网站的数据库完全复制。所以我做了一下步骤把mssql服务器停1到2分钟把需要的mdf和log文件拷贝一份重新启动mssql服务。使用attach把刚复制的mdf文件弄成一个新的数据库。当然,名字等问题全是新的。问题出现了,忘记了有fulltext index。结果导致原来网站的全文搜索出现问题。原因是2个原创 2009-07-04 01:16:00 · 494 阅读 · 0 评论 -
百万级数据查询优化
对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where nu转载 2011-08-05 02:59:59 · 6614 阅读 · 0 评论 -
使用sp_executesql动态给表加数据。
今天想尽办法来实现如何使用动态sql返回的数据集。偶然间发现一个可行的方法。不知是否有通用性。但是在我的测试环境里可以运行。放到网站里也能运行。使用的数据库是:mssql 2005declare @t table( sku varchar(20))-原创 2011-09-14 15:37:37 · 1724 阅读 · 2 评论 -
linked服务器的性能一个小测试。
公司最近又使用linked服务器。就是把不同的数据库使用linked server把它们连在一起。这样就可以在一个datasource下把不同服务器的数据库进行访问。但是这个存在性能的问题。 linked服务器在我的数据库里的性能不是很好。特别是大数据量的时候。有些慢原创 2011-09-20 10:30:26 · 710 阅读 · 0 评论 -
使用XML在MSSQL把字串分解
今天要在mssql里处理一串Email地址。以分号分开的。以前自己写过一个split函数的。这次想使用xml来处理。mssql 2000和mssql 2005数据库对xml的支持有些不同。至少mssql 2005的功能多些。 代码一:这个代码在MSSQL 2005测试成功, 在mssql 2000不通过。最后生成一个表变量。使用者可以把表变量转成需要的数据--定义一个拿来测试原创 2011-12-17 11:10:13 · 1797 阅读 · 1 评论 -
CTE(Common Table Expressions)简单介绍(三)
CTE的定义可以是多个的。在一个SQL语句,你可以定义超过一个以上的CTE。每个CTE之间只是使用逗号(,)分开就可以。With Test_CTE1 As( Select invoiceid from invoices where firstname='Hello'),--第二个CTE定义。Test_CTE2 As( Select invoiceid from i原创 2012-03-30 02:09:51 · 983 阅读 · 2 评论 -
CTE(Common Table Expressions)简单介绍(一)
上星期去上了个公开课,关于CTE(Common Table Expressions)。CTE在MSSQL 2005的时候已经出现。当然,不是MSSQL的特有的,在Oracle里也有。CTE是在SQL语句里定义一个临时的数据集,然后在跟着的SQL语句里面使用。一下是一个简单的例子:With test_cte As( Select * From abc)Select原创 2012-03-29 07:00:13 · 1501 阅读 · 7 评论 -
CTE(Common Table Expressions)简单介绍(四)
CTE(Common Table Expressions)可以实现递归。以下用一个例子说明一下。--定义一个表变量DECLARE @table TABLE( CategoryId INT IDENTITY(1,1) NOT NULL, CategoryName VARCHAR(20), ParentId INT)--弄点测试数据看看。INSERT INTO @table (C原创 2012-04-05 03:28:44 · 1299 阅读 · 0 评论 -
CTE(Common Table Expressions)简单介绍(二)
CTE的SQL语句里,可以使用普通的SQL语句使用的命令。如:INNER JOIN, LEFT JOIN, UNION 等等语句都可以在CTE里使用。With Test_CTE AS( Select InvoiceId from Table1 Union Select InvoiceId from Table2)Select * From Test_CTE原创 2012-03-29 12:08:00 · 806 阅读 · 0 评论 -
【转】从疯狂痴迷数据库存储过程到彻底放弃他
转这篇文章的原因,是因为我也碰到过类似的问题。看法差不多。所以自己就懒得写了。曾经找一个错误,用了不少时间才找到。而且不是一下发现的。是经过好长时间才定位在一个存储过程里。很早的时候,我被我们领导灌输过一个思想,我们领导当时是做WEB出身的,他非常重视WEB的功能。在他眼里,数据库只是存放数据的箱子,不应该把过多的业务逻辑交给数据库去处理,应该只把他看做是存放数据的箱子,我们当时是转载 2012-11-27 15:16:27 · 759 阅读 · 0 评论 -
SQL小代码:字串转为表变量
Declare @List varchar(max)Declare @Delimeter varchar(1)---这里修改参数Select @List='1,2,3', --字串的内容 @Delimeter=',' --字串的分隔符Declare @counter int, @item varchar(200)Declare @t table (item原创 2012-11-27 14:55:02 · 599 阅读 · 0 评论 -
CentOS: 下mysql远程连接的失败的解决方法
文章转自http://www.cnblogs.com/Jerryshome/archive/2011/08/03/2126409.html, 只是格式和编辑器使用有所改变。注:我会用到我介绍的小工具来做编辑,可以参考我的帖子CENTOS要安装的小工具一) 先将mysql服务停掉/etc/init.d/mysqld stop二) 查看mysql配置文件na转载 2016-09-23 14:39:15 · 5529 阅读 · 0 评论