我有一个MYTABLE带有日期列的表,SDATE它是表的主键,并且有一个唯一的索引.
当我运行此查询时:
SELECT MIN(SDATE) FROM MYTABLE
Run Code Online (Sandbox Code Playgroud)
它会立即给出答案.同样的情况发生在:
SELECT MAX(SDATE) FROM MYTABLE
Run Code Online (Sandbox Code Playgroud)
但是,如果我一起查询:
SELECT MIN(SDATE), MAX(SDATE) FROM MYTABLE
Run Code Online (Sandbox Code Playgroud)
它需要更多的时间来执行.我分析了计划并发现当查询最小值或最大值时,它使用INDEX FULL SCAN(MIN/MAX),但是当两者同时被查询时,它会进行全表扫描.
为什么?
测试数据:
版 11g
create table MYTABLE
(
SDATE DATE not null,
CELL VARCHAR2(10),
data NUMBER
)
tablespace CHIPS
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
alter table MYTABLE
add constraint PK_SDATE primary key (SDATE)
using index
tablespace SYSTEM
pctfree 10
initrans 2
maxtrans 255
storage …Run Code Online (Sandbox Code Playgroud) 在下面的例子中,我为每个子类型编写了一个to_str()函数和一个set()过程pls_integer.除类型外,功能和程序几乎相同.
如何在不放弃子类型提供的约束的情况下消除编写另一个to_str()和set()新子类型的需要?
回落varchar2喜欢
procedure set(list in varchar2, prefix in varchar2)
Run Code Online (Sandbox Code Playgroud)
然后将其称为
set(to_str(list), 'foos:')
Run Code Online (Sandbox Code Playgroud)
这听起来不太好,我仍然需要to_str()为每个子类型提供.
我对所有不同的提案都持开放态度,因为我是甲骨文的新手,几乎每天都有新的Oracle功能让我感到惊讶.
我正在运行11.2.0.1.0.
create table so1table (
id number,
data varchar(20)
);
create or replace package so1 as
subtype foo_t is pls_integer range 0 .. 4 not null;
type foolist is table of foo_t;
procedure set(id_ in number, list in foolist default foolist(1));
subtype bar_t is pls_integer range 5 .. 10 not null; …Run Code Online (Sandbox Code Playgroud) 我目前正在使用Oracle数据库处理ASP.NET MVC 4项目.我已成功在我的Web.config文件中添加连接字符串,如下所示:
<add name="OracleDBConnString" connectionString="Provider=MSDAORA;Data Source=ISDQA;User ID=isd;Password=isdqa;" providerName="System.Data.OleDB" />
Run Code Online (Sandbox Code Playgroud)
但是当我创建一个新项目时,它已经有了一个内置的身份验证类.如何一劳永逸地修改这些类?我想更改默认值ConnString.
这是我的模特:
public class UsersContext : DbContext
{
public UsersContext()
: base("OracleDBConnString")
{
}
public DbSet<UserProfile> UserProfiles { get; set; }
}
public class LoginModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的用户控制器:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public …Run Code Online (Sandbox Code Playgroud) 简单来说,我正在尝试计算其父项所拥有的树的根的百分比,进一步在树上.我怎么能单独用SQL做这个?
这是我的(样本)架构.请注意,虽然层次结构本身很简单,但还有一个额外的holding_id,这意味着单个父母可以"拥有"他们孩子的不同部分.
create table hierarchy_test (
id number -- "root" ID
, parent_id number -- Parent of ID
, holding_id number -- The ID can be split into multiple parts
, percent_owned number (3, 2)
, primary key (id, parent_id, holding_id)
);
Run Code Online (Sandbox Code Playgroud)
还有一些样本数据:
insert all
into hierarchy_test values (1, 2, 1, 1)
into hierarchy_test values (2, 3, 1, 0.25)
into hierarchy_test values (2, 4, 1, 0.25)
into hierarchy_test values (2, 5, 1, 0.1)
into hierarchy_test values (2, 4, …Run Code Online (Sandbox Code Playgroud) 以下是一些PL/SQL代码的摘录,我相信这些代码演示了PL/SQL错误:
if guid_ is null then
dbms_output.put_line('guid_ is null: ' || guid_);
end if;
Run Code Online (Sandbox Code Playgroud)
执行这些行时,将打印
guid_ is null: 07D242FCC55000FCE0530A30D4928A21
Run Code Online (Sandbox Code Playgroud)
我在Oracle 11R2上
select * from v$version;
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for IBM/AIX RISC System/6000: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
Run Code Online (Sandbox Code Playgroud)
我可以使用以下类型和匿名块重现这一点.对不起,但我相信我不能再缩短它了:
create type tq84_t as table of varchar2(32);
/
create type tq84_o as object (
dummy number(1),
not final member procedure clear
) …Run Code Online (Sandbox Code Playgroud) 我有以下格式的数据.
match_id team_id won_ind
----------------------------
37 Team1 N
67 Team1 Y
98 Team1 N
109 Team1 N
158 Team1 Y
162 Team1 Y
177 Team1 Y
188 Team1 Y
198 Team1 N
207 Team1 Y
217 Team1 Y
10 Team2 N
13 Team2 N
24 Team2 N
39 Team2 Y
40 Team2 Y
51 Team2 Y
64 Team2 N
79 Team2 N
86 Team2 N
91 Team2 Y
101 Team2 N
Run Code Online (Sandbox Code Playgroud)
这里match_id按时间顺序排列,37是第一个,217是team1最后一场比赛.won_ind表明球队是否赢了比赛.
所以,从上面的数据来看,team1已经输掉了第一场比赛,然后赢了一场比赛,然后输掉了2场比赛,然后赢了4场比赛,依此类推.现在我有兴趣为每支球队找到最长的连胜纪录.
Team_id longest_streak
------------------------ …Run Code Online (Sandbox Code Playgroud) Oracle文档声称它将XMLType存储为BINARY XML而不是CLOB.但是如何找出二进制xml占用了多少空间?
CREATE TABLE t (x XMLTYPE) XMLTYPE x STORE AS BINARY XML;
SELECT vsize(x), dbms_lob.getlength(XMLTYPE.getclobval(x)) FROM t;
94 135254
94 63848
94 60188
Run Code Online (Sandbox Code Playgroud)
因此,vsize似乎是某种指针或LOB定位器的大小,并将getclobval二进制XML解包为文本.但是二进制XML本身的存储大小呢?
请帮忙,表大小为340GB,所以值得研究存储选项......
找出一种在TKPROF输出中可视化捕获递归调用树的方法(指定SYS = YES).
Oracle Database 11g企业版11.2.0.1.0版 - 64位生产
Windows 7 64位DELL Latitude核心i7 2.8GHz 8G内存和SSD硬盘
我正在尝试理解索引和性能指示的影响,如问题Oacle 11G - 插入时索引的性能影响.
要进一步了解场景背后发生的索引,请在create index语句上运行SQL跟踪.
在索引创建上运行跟踪(SQL到底部)并使用"sys = yes"选项运行tkprof.
SQL> ALTER TABLE TBL2 ADD CONSTRAINT PK_TBL2_COL1 PRIMARY KEY(COL1) ;
Table altered.
Elapsed: 00:00:01.75
> trcsess clientid="CREATE_INDEX" output="report_createindex.trc" *.trc
> tkprof createindex.trc output=createindex.txt sys=yes
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以使用tkprof或其他工具从trace(.trc)文件中捕获调用层次结构,如解释计划.
生成的报告包括递归调用,例如"ALTER TABLE TBL2 ADD",导致"INDEX BUILD UNIQUE",并且可能还有进一步的sys递归调用.我想输出不会反映出调用层次结构(父亲优先,紧随其后的子节点).
TKPROF输出
SQL ID: 2w9c2khpsfj4m
Plan Hash: 3219312727
CREATE UNIQUE INDEX "TRY"."PK_TBL2_COL1" on "TRY"."TBL2"("COL1") NOPARALLEL
call count cpu elapsed disk …Run Code Online (Sandbox Code Playgroud) 我在版本11.2上遇到DBMS_DATA_MINING.CREATE_MODEL问题.在10g这个代码下面的代码运行正常,我很确定在11.1上它也有效.
CREATE OR REPLACE VIEW "SH"."ITEMS" AS SELECT PROD_ID AS item FROM SALES GROUP BY PROD_ID;
CREATE OR REPLACE VIEW "SH"."TRANSACTIONS" AS SELECT "SH"."SALES"."PROD_ID" AS item , "SH"."SALES"."CUST_ID" tid FROM "SH"."SALES" where cust_id between 100001 AND 104500 GROUP BY cust_id, prod_id;
CREATE TABLE "SH"."AR_SETTINGS" ( "SETTING_NAME" VARCHAR2(30 BYTE), "SETTING_VALUE" VARCHAR2(128 BYTE) );
INSERT INTO SH.AR_SETTINGS (SETTING_NAME, SETTING_VALUE) VALUES ('ASSO_MAX_RULE_LENGTH', '6' );
INSERT INTO SH.AR_SETTINGS (SETTING_NAME, SETTING_VALUE) VALUES( 'ASSO_MIN_CONFIDENCE', TO_CHAR(0.7));
INSERT INTO SH.AR_SETTINGS (SETTING_NAME, SETTING_VALUE) VALUES( 'ASSO_MIN_SUPPORT', TO_CHAR(0.1));
BEGIN DBMS_DATA_MINING.CREATE_MODEL( model_name …Run Code Online (Sandbox Code Playgroud) oracle11gr2 ×10
oracle ×9
oracle11g ×5
sql ×4
plsql ×2
c# ×1
connect-by ×1
data-mining ×1
hierarchy ×1
indexing ×1
recursion ×1
subtype ×1
trace ×1
xml ×1