小编Jac*_*las的帖子

如何强制 SQLite 实现子查询?

因为 SQLite 有时会对random()出现在子查询中的函数进行多次评估,这可能是一个错误,例如:

select op, op from (select abs(random())%10 as op from (select 1));
3|1
Run Code Online (Sandbox Code Playgroud)

我需要一种简单的方法来强制 SQLite 实现子查询,以便random()只计算一次

这是演示的简化示例 - 我的真实世界查询没有from (select 1)但从视图中选择

sqlite

6
推荐指数
1
解决办法
4074
查看次数

是否有任何表可以获得所有 Oracle 支持的系统权限和对象权限?

是否有任何表可以获得所有 Oracle 支持的系统权限和对象权限?我知道all_sys_privs在 Oracle 中有一个视图。但我找不到更多关于它的信息。

谢谢。

oracle permissions role

6
推荐指数
1
解决办法
360
查看次数

如何在大插入期间最小化日志记录?

在夜间计划任务期间,我使用select into然后添加聚集索引从头开始创建一个大表。我想在整个过程中最大限度地减少日志记录量,因为我用于日志备份传送的带宽有限。

如果有帮助,我很乐意考虑另一种方法。

sql-server-2008 logs

6
推荐指数
2
解决办法
3337
查看次数

优化 IP 范围搜索?

我有一个简单的查询和表,我想知道哪种索引对这种表和查询是有效的。

在我的表中,我有 3 列

CREATE TABLE mYTable(ipFrom BIGINT, ipto BIGINT, url NVARCHAR(255))
Run Code Online (Sandbox Code Playgroud)

我正在运行这个简单的查询。

SELECT url 
FROM MyTable 
WHERE ipto <= somevalue AND ipfrom >= somevalue
Run Code Online (Sandbox Code Playgroud)

我还在所有 3 列上创建了索引,这些列聚集在 ipFrom 上,其余 2 列上没有聚集。但是这个查询在 CPU 和读取方面给我带来了非常糟糕的性能。

有什么建议。


我实施的是我喜欢根据 IP 地址重定向用户。我存储了来自不同地区和州的多个 IP 范围,并根据用户的 IP 将用户重定向到适当的 URL。

是的,我认为我在两列中以错误的方式插入了数据(稍后会重命名列),但这里的重点是最小化 CPU。

当我查看那里的执行计划时,它会在 where 子句中转换数据,我不知道它为什么要在 where 子句中转换数据。有这样的事情

|--聚簇索引查找(OBJECT:([T].[TC]), SEEK:([T].[C] > Convert([@V])

index sql-server-2000

6
推荐指数
2
解决办法
1225
查看次数

为什么 Oracle 一直在开发 MySQL 5.1

2 年前,Mysql 5.5 的第一个版本发布了。继续在 MySQL 5.1 上工作的原因是什么 - 当前版本是 Mysql 5.1.62

看起来它们之间应该有根本的区别。我很困惑更喜欢哪个版本。

mysql mysql-5.5 mysql-5.1

6
推荐指数
1
解决办法
260
查看次数

在 DELETE 语句中使用 FROM 关键字

BOL 和许多其他来源指出:

FROM
是一个可选关键字,可以在 DELETE 关键字和目标 table_or_view_name 或 rowset_function_limited 之间使用。

我习惯写DELETE没有FROM. 我进行了一些搜索,但找不到FROM强制性的地方。任何人都可以指出应该强制执行的情况吗?还是总是可选的?

sql-server delete t-sql

6
推荐指数
1
解决办法
2890
查看次数

列出包含在其他组中的值组的最佳方法是什么

例如,从这样的表开始:

create table t as 
select 'A' as x, level as y from dual connect by level<=5
union all 
select 'B' as x, level+2 as y from dual connect by level<=5
union all 
select 'C' as x, level as y from dual connect by level<=3
union all 
select 'D' as x, level+2 as y from dual connect by level<=3;

alter table t add primary key (x, y);

select * from t;

X Y                      
- -
A 1                      
A 2                      
A …
Run Code Online (Sandbox Code Playgroud)

oracle

5
推荐指数
1
解决办法
249
查看次数

比较 SQL Server 2008 中的 DISTINCT、GROUP BY 和 ROW_NUMBER() 与数据仓库工作负载

我最近听到了这样的建议:“如果您使用的是 DISTINCT,我会挑战您修复您的代码。” 但是,我想知道这个建议背后的考虑因素,以及这是否意味着我应该以不同的方式处理以下问题。

问题背景

我有一个非规范化的日期维度表(Kimball 星型架构)。在这张表中,我折叠了几个第三范式表:日期、绝对周、绝对月和年。对于这些折叠表中的每一个,我都有一个表示唯一标识的列、一个文本名称列和一个数字手动排序索引。这是显示结构的示例行,数字仅用于说明(为便于阅读采用垂直形式):

  • 日期编号:20110507
  • 日期名称:2011 年 5 月 7 日
  • 日期订单:17813
  • 周号:201118
  • :2011 年第 18 周
  • 周订单:617
  • 月号:201105
  • MONTHNAME:2011年5月
  • 月订单: 74
  • 年份编号:2011
  • 年份名称: 2011
  • 年订单: 41

为了便于理解,我选择使用日期维度表,但该问题可以转换为任何其他涉及层次结构的维度表。

问题概要

我想用相关的文本字段检索一组不同的周和月组合。

可能的解决方案

1. 与众不同

SELECT DISTINCT MonthId, WeekId, YearName, MonthName, WeekName
  FROM DimDate
Run Code Online (Sandbox Code Playgroud)

请注意,我不能排除 MonthId 或 WeekId,因为我不能假设自由文本字段是唯一的。

2. 分组依据

SELECT MIN(YearName), MIN(MonthName), MIN(WeekName)
  FROM DimDate
 GROUP BY MonthId, WeekId
Run Code Online (Sandbox Code Playgroud)

3. 行号

WITH grp AS (
  SELECT …
Run Code Online (Sandbox Code Playgroud)

sql-server query

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

如果“之后”DDL 触发器导致错误,DDL 是否回滚?

已建议该DDL在逻辑上进行这样的事情:

begin
    COMMIT;
    perform any appropriate pre-DDL trigger code;
    do the ddl;
    perform any appropriate post-DDL trigger code;
    COMMIT;
exception
    when others then
         ROLLBACK;
         raise;
end;
Run Code Online (Sandbox Code Playgroud)

这表明触发器中的任何错误都会导致 DDL 回滚。是这种情况吗?

trigger oracle ddl rollback

5
推荐指数
1
解决办法
826
查看次数

如何在一个语句中组合“删除”和“插入”操作?

对于以下数据,我希望能够删除一些行并插入其他行并给出以下结果。这是否可以通过单个语句(例如使用merge语句)实现?

create table product(product_id integer primary key);
insert into product(product_id) values(1);
insert into product(product_id) values(2);
insert into product(product_id) values(3);

create table split( parent_id integer not null references product, 
                    child_id integer not null references product,
                    primary key(parent_id, child_id) );

insert into split(parent_id, child_id) values(1,2);
insert into split(parent_id, child_id) values(1,3);

create table sale(sale_at date, product_id integer references product);

insert into sale(sale_at, product_id) values(sysdate, 1);
insert into sale(sale_at, product_id) values(sysdate, 1);
insert into sale(sale_at, product_id) values(sysdate, 1);
insert into …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-11g-r2

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