精华内容
下载资源
问答
  • SQL创建里边的with什么意思

    千次阅读 2015-03-25 15:29:23
    SQL创建里边的with什么意思 2009-12-02 22:56anrow定 | 分类:数据库DB | 浏览2969次 例如Create table [dbo].[adminitable] ([adminpassword] [varchar](50) not null,[adminname] [varchar](20) not ...

    SQL创建表里边的with是什么意思

    2009-12-02 22:56anrow定 | 分类:数据库DB | 浏览2969次
    例如Create table [dbo].[adminitable]
    ([adminpassword] [varchar](50) not null,[adminname] [varchar](20) not nullconstraint [pk_adminitable] primary key clustered)
    ([admininame] asc)
    with (pad_index=off,statistics_norecompute=off,ignore_dup_key=off,
    allow_row_locks=on,allow_page_locks=on)
    on [primary] on [primary]
    上述语句大概是创建一个admintable,with后面的语句不知道什么意思,还有最后面两个on [primary]是什么意思???
    primary 是主键唯一约束
    with后面接的是表的约束
    这个我知道,我想问的是为什么要两个on [primary]?还有with后面的语句的具体意思...
    2009-12-04 16:33 提问者采纳
    你写上去的编译的时候有点小错误,正确的应该是这样写的
    Create table [dbo].[adminitable](
    [adminpassword] [varchar](50)  null,
    [adminname] [varchar](20)  null,
    
    constraint [pk_adminitable] primary key clustered
    (
      [adminname] asc
    )
    with (pad_index=off,statistics_norecompute=off,ignore_dup_key=off,allow_row_locks=on,allow_page_locks=on)
    on [primary]) 
    on [primary]
    constraint 是子句限制
    on [primary]是指的该表位于primary文件组,也就是主文件组,一个数据库可以分为n个文件组
    
    with 后面接的是索引描述
    pad_index是指定非页级索引页的数据充满度...
    提问者评价
    谢谢,是我粗心没看到这个符号)...

    展开全文
  • 概述前面已经介绍了with的一些用法,今天主要通过一个实验来简单测试下用不用with的一些不同。1、环境准备准备测试数据267万CREATE TABLE t AS SELECT ROWNUM ID, A.* FROM DBA_OBJECTS A;insert into t select * ...

    概述

    前面已经介绍了with的一些用法,今天主要通过一个实验来简单测试下用不用with的一些不同。


    1、环境准备

    准备测试数据267万

    CREATE TABLE t AS SELECT ROWNUM ID, A.* FROM DBA_OBJECTS A;insert into t select * from t;//.....
    a9f66d78892cc50a4c117d141db7c26e.png

    2、需求

    需求:列出T表中用户包含对象数量大于平均用户对象数的记录。

    这里大家可以想一下你们一般会怎么去实现?


    3、方案1

    set timing on;SELECT OWNER, COUNT(*) CN FROM T GROUP BY OWNER HAVING COUNT(*)>(SELECT AVG(COUNT(*)) FROM T GROUP BY OWNER);
    867b78ed7c58f8b8f96bf21bfaaf06a9.png

    查看执行计划:

    14c5dee034ac7df0b75ae6d51054909d.png

    4、方案2

    当查询中多次用到某一部分时,可以用Oracle with语句创建一个公共临时表。因为子查询在内存临时表中,避免了重复解析,所以执行效率会提高不少。临时表在一次查询结束自动清除。

    set timing on;WITH A AS(SELECT OWNER, COUNT(*) CN FROM T GROUP BY OWNER) SELECT A.* FROM A, (SELECT AVG(CN) ACN FROM A) B WHERE A.CN > B.ACN;
    bf6f3a58921dcacefc7b7c691c2ab47d.png

    查看执行计划

    可以看到先对T表做个全表扫描,然后产生一个公共临时表,后面就只用这个临时表做关联查询,避免了重复解析。

    d50f92471f658ff32bcfb3fdd7ccd6f9.png

    总结

    总之对于同个表如果要避免重复读取这种情况可以考虑用with方式来改写。

    后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

    a47735da0ef60a1ba881855a48e965a3.gif
    展开全文
  • 什么是内部临时?不同于手工创建的临时,在sql执行过程中可能会用到临时文件存储查询结果,称为internal temporary table;该过程由Mysql自动完成,用户无法手工干预;这些或使用memory引擎存于内存,或使用...

    什么是内部临时表?

    不同于手工创建的临时表,在sql执行过程中可能会用到临时文件存储查询结果,称为internal temporary table;

    该过程由Mysql自动完成,用户无法手工干预;

    这些表或使用memory引擎存于内存,或使用MyISAM引擎存于磁盘;

    何时生成

    使用order  by /group by的列并非全来自于join queue的第一个表

    Distinct和order by联合使用

    多表连接需要保存中间结果集

    如何保存

    SQL_SMALL_RESULT会使用内存临时表,除非包含必须使用磁盘临时表的条件:

    当表包含blob/text列,或group by/distinct的列大于512字节时,必须使用磁盘临时表;

    当临时表> min(tmp_table_size, max_heap_table_size)时,会自动将内存临时表转化为磁盘临时表

    可通过状态变量created_tmp_tables/created_tmp_disk_tables查看内部临时表的使用情况

    内部临时表某些情况下会自动生成索引,以提升性能

    MySQL does create two keys on internal temporary tables namely ‘group_key‘ and ‘distinct_key‘ in the following conditions:

    If there is any aggregate function and/or group-by (group_key)

    Distinct column name(group_key)

    Distinct in combination with group-by/aggregation functions (distinct_key)

    已经有人开发相应patch,可通过hint强行在内部临时表上创建index

    SELECT

    SUM(aggrpt.imps) as imps,

    SUM(aggrpt.clicks) as clicks,

    SUM(aggrpt.pos) as pos

    FROMaggrpt

    LEFTJOIN

    (

    SELECT

    DISTINCT ext_group_id, group_id

    FROM sub

    )sub2  ON(sub2.ext_group_id=aggrpt.adgroupid)

    GROUP BY

    aggrpt.report_date,

    aggrpt.campaignid,

    aggrpt.adgroupid,

    aggrpt.keywordid

    ORDER BYNULL

    INTOOUTFILE '/tmp/test-sub.txt'

    --------------

    Query OK, 47827 rows affected (6 min 47.48 sec)

    有两种方法改进:1将子查询改写为一个临时表,并在ext_group_id上创建索引;2对中间结果集添加索引,sub2 USE INDEX(ext_group_id)strong> ON(sub2.ext_group_id=aggrpt.adgroupid)

    改进后的运行时间

    Query OK, 47827 rows affected (7.18 sec)

    展开全文
  • 1.为什么使用with as 我们在使用sql语句的时候经常使用子查询,但是子查询占用系统的资源是很多了,如果用在了循环中更是可怕,当然我们可以使用量函数,但是标量函数的成本还是否不小,所以sql2005给我们提...

    原文地址:http://www.cnblogs.com/zerocc/archive/2011/11/28/2266180.html 

    SQL中 WITH AS 的用法和注意事项

    1.为什么使用with as

    我们在使用sql语句的时候经常使用子查询,但是子查询占用系统的资源是很多了,如果用在了循环中更是可怕,当然我们可以使用表量函数,但是标量函数的成本还是否不小,所以sql2005给我们提供了一个表达式 with as

    使用with as应该注意

    1 with as后面必须紧跟使用CTE(Common table Express) (with as)的语句

    with  a as

    (

    select * from tb1

    )

    select * from tb2,a where a.id=tb1.id

    2 多个CTE 之间加,分割

    with t1 as

    (

    select * from t1

    ),

    t2 as

    (

    select * from t2

    ),

    t3 as

    (

    select * from t3

    )

    3 如果CTE 和某个表重名则第一个使用cte 后面的就是使用了表

    --table1 数据库中有table1

    with table1 as

    (

    select * from tb1

    )

    select * from tb2,table1 where tb1.id=table1.id  --CTE

    select * from tb2,table1 where tb1.id=table1.id  --table1

    4 如果CTE属于批处理的一部分,那么用;和批处理分割

    declare @t1 int

    set @t1=2

    ;

    with t as

    (

    select * from table1

    )

    select * from tb2 ,t where tb2.id=t.id

    今天又学到了With

    With 除了有上面提到的功能以为,With 还有以下的功能

    1  递归调用

      假如,有一个父子关系的表结构,就拿员工表吧,EmployeeID,ReportTO ,FirstName,LastName,其中ReportTO保存着当前记录的直接上级

    那么我们怎么才能查询出给定一个人的下级(所有下级),答案是使用With递归

    with Emp as

    (

      select EmployeeID,ReportTo,FirstName,LastName

      from Employees where Employee=4

      Join All

      select emp.EmployeeID,emp.ReportTo,emp.FirstName,emp.LastName

      from Employees emp

      join Emp

      on Emp.EmployeeID=emp.ReportTo

    )

    select * from Emp

    在With中第一个是锚点,就是从那里开始,第二个循环是递归的主体,知道查询结果为空就结束,这样我们就实现了我们的要求了

    转载于:https://www.cnblogs.com/niaowo/p/3622976.html

    展开全文
  • [img=https://img-bbs.csdn.net/upload/201309/05/1378374563_289258.jpg][/img] 从WITH (PAD_INDEX = OFF , ...............后面就看不懂了
  • 1.为什么用CTE,而不用变量, declare @t table(CountryRegionCode nvarchar(3)) insert into @t(CountryRegionCode) (select CountryRegionCode from person.CountryRegion where Name like 'C%') select * from...
  • 其实那只是它的一个用途而已,它的本名正如我们标题写的那样,叫做:公共表达式(Common Table Expression),从字面理解,大家觉得它是用来干嘛的呢?其实,它是用来定义临时集合的。啊?VALUES语句不是用来定义...
  • 什么80%的码农都做不了架构师?>>> ...
  • 其实那只是它的一个用途而已,它的本名正如我们标题写的那样,叫做:公共表达式(Common Table Expression),从字面理解,大家觉得它是用来干嘛的呢?其实,它是用来定义临时集合的。啊?VALUES语句不是用来定义...
  • 一个带有ORDER BY子句的查询将创建tmp(如show profile所示),并且运行速度更快,即使没有order with with的相同查询也不会创建tmp table。为什么?为什么“排序”出现在配置文件输出中,而没有ORDER BY存在?所以...
  • with... as 是公用表达式,可以理解为创建临时,如: WITH cte AS(SELECT * FROM TABLE1) ...VIEW语句是真正的创建了一个对象,WITH...AS 公用表达式不创建对象,只能被后随的SELECT语句使用
  • 这是什么原因 在10g里没有问题 ``` WITH ABC AS (SELECT 1 A FROM DUAL UNION ALL SELECT 1 FROM DUAL UNION ALL SELECT 1 FROM DUAL) SELECT COUNT(DISTINCT A) FROM ABC UNION ALL SELECT COUNT...
  • 什么要讲这讲内容呢?因为我们在操作数据库的时候,需要的是数据处理,往往从数据中导出数据后,格式会发生变化,我们需要程序来处理。避免手工的操作。如下面截图为导出数据的信息:很显然,这份表格中我们需要...
  • 什么80%的码农都做不了架构师?>>> ...
  • ![图片说明](https://img-ask.csdn.net/upload/202002/06/1580993237_944843.png)![图片说明]... 想知道为什么这两个查询结果不一样? 视图v1是排好序的 目的是为排好序的添加递增序号
  • I'm working on a web page in Google Chrome. 我正在使用Google Chrome浏览器中的网页。 It displays correctly with t
  • 什么会这样? <pre><code> # ./checker -host 127.0.0.1 -port 23307 -user root -password ??????? test t1 </code></pre> <pre><code>bash 2017/06/06 17:46:12 checker.go:48: [info] Checking database...
  • 1,首先多关联是在models/xx.php的relations里配置的。而且是互配,但有区别。 格式: 'VarName'=>array('RelationType', 'ClassName', '...1,VarName指什么? 详见下面例2。 2,RelationType。一共...
  • <code>#include<stdio.h> #include<stdlib.h> //节点结构体 struct Node { int a; struct Node *pNext; }; //链表头尾指针 ...statement with no effect [-Wunused-value] ...这样写有什么错吗</p>
  • * If you just want to use the basic configuration for DataTables with PHP server-side, there is * no need to edit below this line */ /* * Local functions */ function fatal_error ( $sErrorMessage...
  • 今天在查询数据库的时候,向开发要了一条查询语句,发现在语句的后面有with(nolock),不知道这是干啥用的,之前没遇到过,所以就差了下:大家在写查询时,为了性能,往往会在后面加一...
  • 2、cs(Cursor Stability) 在一个事务中进行查询时,允许读取提交前的数据,数据提交后,当前查询就可以读取到数据,update数据的时候并不锁。 3、rs(Read Stability) 在一个事务中进行查询时,不允许读取其他事务...
  • I have two tables in ... In each of these tables, devices with their MAC-Addresses and information of their states area saved.These states do start and end at certain timestamps (startTime,endTime)...
  • WITH查询

    2014-11-25 18:10:01
    什么要用WITH? 1. 如果需要在一段复杂查询里多次应用同一个查询,用WITH可实现代码重用; 2. WITH查询类似将查询结果保留到用户临时表里,在大的复杂查询中可以减少IO,有一定的性能优化作用。 WITH查询有何...
  • 什么 使用RLC测量电感在不同的频率下所测量得到的电感不同呢? .   01问题的解释 If the inductor being measured is not an air core type, the permeability of the core material may well change with...
  • 什么80%的码农都做不了架构师?>>> ...
  • <p>I am planning to to record the count of selected products with <code>type=1</code> and then update those with a loop in <code>tbl_type1 WHERE id=$count_id</code>. One question leaves for me to ...
  • <p>i'm noob with php and i was wondering what that expression mean:</p> <pre><code>$extra_adults = ($num_adults > $people) ? $num_adults-$people : 0; </code></pre> <p>can someone explain me ...
  • <p>I had mysql table with this structure: <pre><code>Row -> PK Column -> PK Value </code></pre> <p>I had around 10 Column and a dinamic Rows which need to be displayed in webpage. <p>My ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 872
精华内容 348
关键字:

with表什么