使用SQL Server,我可以通过SQL Server Management Studio或任何其他客户端使用完整的过程逻辑执行代码即席T-SQL代码.我已经开始使用PostgreSQL并且遇到了一些区别,因为PGSQL需要在函数中嵌入任何逻辑.
有没有办法在不创建执行函数的情况下执行PL/PGSQL代码?
我在表T的A,B,C,D列上有一个索引
我有一个查询,它在WHERE子句中使用A,B,C从T中提取.
是否会使用索引或是否需要一个仅包含A,B,C的单独索引?
SQL开发人员如何着手跟上SQL世界中的当前技术和趋势?是否有任何博客,书籍,文章,技术等用于保持最新和知识?
面向OO,程序和功能程序员参与各种开源项目有很多机会,但在我看来,对于SQL开发人员而言,FOSS大道更加封闭.
思考?
我正在使用Hive,我的表格结构如下:
CREATE TABLE t1 (
id INT,
created TIMESTAMP,
some_value BIGINT
);
Run Code Online (Sandbox Code Playgroud)
我需要找到t1
不到180天的每一行.即使表中存在与搜索谓词匹配的数据,以下查询也不会产生任何行.
select *
from t1
where created > date_sub(from_unixtime(unix_timestamp()), 180);
Run Code Online (Sandbox Code Playgroud)
在Hive中执行日期比较的适当方法是什么?
我正在尝试编写一个查询,它将从Bill表中撤消最近的两行,其中Estimated标志为true.问题在于这些需要是连续的账单.
简而言之,如果估算了最后两个账单周期的账单,我需要在另一个表格中输入一行.
如果可能的话,我想在没有光标的情况下这样做,因为我正在使用大量的数据,这必须经常运行.
编辑
表格上有一个AUTOINCREMENT(1,1)列.在没有放弃太多表结构的情况下,表基本上是结构:
CREATE TABLE Bills (
BillId INT AUTOINCREMENT(1,1,) PRIMARY KEY,
Estimated BIT NOT NULL,
InvoiceDate DATETIME NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
所以你可能有一组结果,如:
BillId AccountId Estimated InvoiceDate -------------------- -------------------- --------- ----------------------- 1111196 1234567 1 2008-09-03 00:00:00.000 1111195 1234567 0 2008-08-06 00:00:00.000 1111194 1234567 0 2008-07-03 00:00:00.000 1111193 1234567 0 2008-06-04 00:00:00.000 1111192 1234567 1 2008-05-05 00:00:00.000 1111191 1234567 0 2008-04-04 00:00:00.000 1111190 1234567 1 2008-03-05 00:00:00.000 1111189 1234567 0 2008-02-05 00:00:00.000 1111188 1234567 1 2008-01-07 00:00:00.000 1111187 1234567 1 …
我在OS X上的Emacs 23中使用csharp-mode.我想让flymake语法检查正常工作,但我对emacs lisp不太熟悉,知道在csharp-mode.el文件中将更改内容更改为改变编译器.任何援助将不胜感激.
使用Riak我希望以一种方式顺序追加数据,这样我就可以获得我不时附加的所有数据.想想日志,如果我选择增加的日志行并将它们转移到riak,在某些时候我想要重新构建我所附加的内容.
我想通过为此目的创建一个新的存储桶,然后添加由序列号或日期时间戳定义的键,然后将内容添加到它,然后使用列表键API并重新构建我需要的数据.问题在于列表键API效率不高,建议使用生产.我喜欢这种方法的是数据没有并发写入问题(没有锁/等),因为所有键都是独立的.
另一种方法是使用单个密钥,打开它并附加到它,但我非常担心并发/锁定问题.此操作将在分布式环境下执行,肯定是一个糟糕的选择
问题:在Riak中有任何其他方法吗?对键的任何附加模式?
一位同事最近遇到了这样一种情况:查询安全权限需要大约15秒才能使用= UserID(这是一个UNIQUEIDENTIFIER)进行比较.毋庸置疑,用户对此印象不足.
出于沮丧,我的同事改变了=比较以使用LIKE并且查询加速到1秒以下.
如果不了解数据模式(我无权访问数据库或执行计划),可能会导致性能发生这种变化?
(广泛而含糊的问题,我知道)
我正在使用几个可选参数处理存储过程.其中一些参数是单个值,使用WHERE子句很容易,如:
WHERE (@parameter IS NULL OR column = @parameter)
Run Code Online (Sandbox Code Playgroud)
但是,在某些情况下,WHERE条件更复杂:
WHERE (@NewGroupId IS NULL OR si.SiteId IN (SELECT gs.SiteId
FROM [UtilityWeb].[dbo].[GroupSites] AS gs
WHERE gs.GroupId = @NewGroupId))
Run Code Online (Sandbox Code Playgroud)
当我取消注释这些复杂的WHERE子句时,查询执行时间加倍,执行计划变得非常复杂.虽然执行计划不会打扰我,但是查询的执行时间加倍是一个明确的问题.
是否存在其他人在其存储过程中使用可选参数时发现的最佳实践或模式?
这是动态SQL是更好的解决方案吗?
我有一个HiveQL查询,看起来像:
SELECT ID,
CASE WHEN col_a = 0 THEN 0
ELSE (col_b / col_a) END AS math_is_fun
FROM (/* derived query*/) AS x ;
Run Code Online (Sandbox Code Playgroud)
当我在Hive中执行此操作时,我最近开始收到错误 FAILED: Error in semantic analysis: Line X:Y ArgumentTypeMismatch 'col_a': The expression after ELSE should have the same type as those after THEN: "int" is expected but "double" is found.
虽然我理解文字0
和结果之间存在数据类型不匹配(col_a / col_b)
,但我不清楚为什么Hive会对此产生窒息,更重要的是,解决此错误的最佳方法是什么.我应该把文字0
作为一个double
或更好的方法吗?
这是在Amazon EMR中运行的Hive 0.8.1.