
Database
文章平均质量分 50
等不到来世
hi
展开
-
[SqlServer] 性能优化实战-join与where条件执行顺序
昨天经历了一场非常痛苦的性能调优过程,但是收获也是刻骨铭心的,感觉对sql引擎的原理有了进一步认识。问题起源于测试人员测一个多条件检索的性能时,发现按某个条件查询会特别慢。对应的sql语句简化为:select * from ta a,tb bwhere a.bid=b.idand a.col1='xx'and b.col2='yy'and dbo.func(a.col3,'zz')原创 2015-11-25 14:47:29 · 14052 阅读 · 2 评论 -
[SqlServer] 全库搜索指定字符串
今天有同事问我要个脚本,给定一个字符串,在库里查出哪个表的哪个列的值包含它。写完之后,觉得自己将来可能也要用到,就暂且在这备个份。if OBJECT_ID('tempdb..#t') is not null drop table tempdb..#tGOdeclare @s nvarchar(256) --指定字符串set @s='爱'declare @sql nvarchar(m原创 2015-11-27 18:39:02 · 5787 阅读 · 4 评论 -
[Navicat] 常用快捷键及注意事项
近来需要同时管理多种类型、多台server的数据库,在经历了各种查询客户端(SSMS, SQLyog, PL/SQL等)的不断切换,ip/user/pwd的反复输入的这种自虐式体验后,实在无法忍受,就选择了Navicat,感觉自己马上从各种重复劳动中解放出来!为了进一步提高效率,必须熟悉navicat的常用快捷键,整理如下。常用快捷键:1. ctrl + q: 打开新查询窗口2. ct原创 2015-12-17 16:38:25 · 61057 阅读 · 9 评论 -
[Mysql] Limit分页性能陷阱
由于需要支持多种数据库,分页查询的sql写成如下的样子:SELECT * FROM (SELECT * FROM tb) tLIMIT 0,50结果,4w总数,每页取50条,竟然需要2.5s!经过反复调试,发现去掉嵌套,只需100ms!! 做了一些特殊处理后,sql改成:SELECT * FROM tbLIMIT 0,50思考:在嵌套外面加LIMIT,子查询需要全部检索原创 2015-10-21 14:18:59 · 627 阅读 · 0 评论 -
[Mysql] Count(*)性能问题
分页时,我们需要查总条数:SELECT COUNT(*) FROM tbWHERE CREATE_DATETIME > '1998-01-01'然后发现,这个求总数的sql竟然花了300ms,比取分页数据的时间还长!有人说不加WHERE条件的COUNT会非常快,因为有单独的地方存这个总数。然并卵……把COUNT(*)换成COUNT(1),COUNT(主键),耗时都一样。虽然"*"原创 2015-10-21 15:01:11 · 4477 阅读 · 0 评论 -
[Navicat] 连接Oracle报错_Cannot load OCI DLL 87
Navicat可以用来连接各种主流数据库,真是个不错的DB工具。如果你第一次用Navicat尝试连接oracle数据库,很可能报下面的错:Cannot load OCI DLL 87:Instant Client package is required for Basic and TNS connection.原因:Oracle需要装client才能让第三方工具通过OCI(原创 2015-12-08 14:54:45 · 75853 阅读 · 25 评论 -
[SqlServer] 处理死锁
1. 查看所有当前被锁的表select distinct request_session_id spid,b.namefrom sys.dm_tran_locks a join sysobjects b on a.resource_associated_entity_id=b.idwhere a.resource_type='OBJECT' and b.xtype='u'2. 查看原创 2017-09-16 11:49:54 · 2116 阅读 · 0 评论