标签: sql

在SQL中将月号转换为月份名称函数

我有几个月在SQL Server中存储为1,2,3,4,... 12.我想将它们显示为1月,2月等.在SQL Server中是否有像MonthName(1)= January这样的函数?如果可能的话,我试图避免CASE声明.

sql t-sql sql-server sql-server-2005

201
推荐指数
13
解决办法
94万
查看次数

CTE,子查询,临时表或表变量之间是否存在性能差异?

在这个优秀的SO问题中,讨论了CTE和之间的sub-queries差异.

我想具体问一下:

在什么情况下,以下各项更有效/更快?

  • CTE
  • 子查询
  • 临时表
  • 表变量

传统上,我temp tables在开发中使用了很多stored procedures- 因为它们看起来比许多交织在一起的子查询更具可读性.

Non-recursive CTEs非常好地封装数据集,并且非常易读,但是在某些情况下可以说它们总能表现得更好吗?或者是否必须总是摆弄不同的选项才能找到最有效的解决方案?


编辑

我最近被告知,就效率而言,临时表是一个很好的首选,因为它们具有相关的直方图即统计数据.

sql t-sql sql-server subquery common-table-expression

200
推荐指数
4
解决办法
12万
查看次数

在SQL中,count(列)和count(*)之间有什么区别?

我有以下查询:

select column_name, count(column_name)
from table
group by column_name
having count(column_name) > 1;
Run Code Online (Sandbox Code Playgroud)

会有什么区别,如果我更换了所有调用count(column_name)count(*)

这个问题的灵感来自于如何在Oracle中的表中找到重复值?.


为了澄清已接受的答案(也许是我的问题),替换count(column_name)count(*)将在结果中返回一个额外的行,其中包含a nullnull列中的值计数.

sql

199
推荐指数
5
解决办法
4万
查看次数

修改表:如何将"允许空值"属性从非null更改为允许为空

如何使用T-SQL更改表中的一个属性以允许空值(非null - > null)?可能会改变表吗?

sql sql-server sql-server-2008

199
推荐指数
4
解决办法
26万
查看次数

"其中1 = 1"声明

可能重复:
为什么有人在SQL子句中使用WHERE 1 = 1 AND <conditions>?

我看到有些人使用语句来查询MySQL数据库中的表,如下所示:

select * from car_table where 1=1 and value="TOYOTA"
Run Code Online (Sandbox Code Playgroud)

1=1这里的意思是什么?

mysql sql database

198
推荐指数
5
解决办法
6万
查看次数

SQL到LINQ工具

有没有可以将SQL语法转换为LINQ语法的工具?

我只想用join等重写基本查询到LINQ.这会节省我很多时间.

sql linq

197
推荐指数
3
解决办法
17万
查看次数

如何为查询返回的每一行执行一次存储过程?

我有一个以某种方式改变用户数据的存储过程.我传递给它user_id,它确实是这样的.我想在一个表上运行查询,然后对于每个user_id,我发现在该user_id上运行一次存储过程

我该怎么写这个查询?

sql sql-server stored-procedures

197
推荐指数
6
解决办法
27万
查看次数

如何在MySQL中从BLOB转换为TEXT?

我有很多记录,其中文本存储在MySQL的blob中.为了便于处理,我想将数据库中的格式更改为TEXT ...任何想法如何轻松地进行更改以便不中断数据 - 我想它需要正确编码?

mysql sql blobs

197
推荐指数
6
解决办法
33万
查看次数

从数据库表生成类

如何从SQL Server的表中生成类?

我不是在谈论使用一些ORM.我只需要创建实体(简单类).就像是:

    public class Person 
    {
        public string Name { get;set; }
        public string Phone { get;set; }
    }
Run Code Online (Sandbox Code Playgroud)

c# sql t-sql sql-server

197
推荐指数
10
解决办法
18万
查看次数

优化PostgreSQL以进行快速测试

我正在从SQLite切换到PostgreSQL,用于典型的Rails应用程序.

问题是PG的运行规格变得缓慢.
在SQLite上花了大约34秒,在PG上它是~76秒,这慢了2倍.

所以现在我想应用一些技术来使规范的性能与SQLite相提并论,而不需要修改代码(理想情况下只需设置连接选项,这可能是不可能的).

从头到尾有几件显而易见的事情是:

  • RAM磁盘(在OSX上使用RSpec进行良好设置会很好看)
  • 未记录的表(它可以应用于整个数据库,所以我没有更改所有脚本吗?)

你可能已经明白我不关心可靠性和其余的(DB在这里只是一次性的东西).
我需要充分利用PG并尽可能快地完成它.

理想情况下,最佳答案将描述这样做的技巧,设置和这些技巧的弊端.

更新: fsync = off + full_page_writes = off仅将时间减少到~65秒(〜-16秒).良好的开端,但远远没有34的目标.

更新2:尝试使用RAM磁盘,但性能增益在误差范围内.所以似乎不值得.

更新3:* 我找到了最大的瓶颈,现在我的规格和SQLite一样快.

问题是进行截断的数据库清理.显然SQLite在那里太快了.

为了"修复"它,我在每次测试之前打开一个事务并在结束时回滚它.

约700个测试的一些数字.

  • 截断:SQLite - 34s,PG - 76s.
  • 交易:SQLite - 17s,PG - 18s.

SQLite的速度提高了2倍.PG的速度提高4倍.

sql database postgresql performance database-tuning

196
推荐指数
2
解决办法
5万
查看次数