首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL server----sys.objects、sys.columns、sysindexes

generated_always_type 值的文本描述(系统表中的列总是 NOT_APPLICABLE) NOT_APPLICABLE AS_ROW_START AS_ROW_END适用于:从 2022...指示列是否由动态数据掩码进行掩码处理: 0 = 不进行掩码处理的常规列 1 = 列进行掩码处理 graph_type int 具有一组值的内部列。...reserved int 对于 indid = 0 或 indid = 1, 保留 是为所有索引和表数据分配的页计数。 对于 indid> 1, 保留 是为索引分配的页计数。...已使用 int 对于 indid = 0 或 indid = 1, 使用 是用于所有索引和表数据的总页数。 对于 indid> 1, 使用的 是用于索引的页计数。...rowmodctr int 对自上次更新表的统计信息后插入、删除或更新行的总数进行计数。 0 = indid> 1 时对索引进行分区。 0 = indid 为 0 或 1 时对表进行分区。

2.1K20

程序员硬核“年终大扫除”,清理了数据库 70GB 空间

在实际找这些可删除的未使用的索引时,刚开始很耗时耗力,需要很多思考和决策的。 在这过程中,我发现在检查完列表后,重置统计信息计数器是个好方法。...从PostgreSQL 13开始,将 B树Deduplication后,重复值仅存储一次,这对具有许多重复值的索引的大小产生影响。...采购用户对此具有 NOT NULL 约束,因此所有行均具有值。另一方面,取消用户可以为空,只有一小部分行保存任何数据,取消用户字段中的大多数值均为NULL。...从索引中排除空值是否总是有好处?NULL和任何其他值一样有意义。如果查询使用了 IS NULL,这些查询可能会受益于索引NULL。 这个方法仅对空值有用?...使用部分索引排除不经常查询或根本不查询的值可能有益于任何值,而不仅仅是空值。NULL通常表示缺少值,我们没有很多查询在搜索空值,因此将它们从索引中排除是有意义的。 你最终如何清除超过20GB的空间呢?

2.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PG中的查询:2.统计--(1)

    此处未考虑表大小,因为总体数据集大小对足以进行精确统计的样本大小没有影响。 从300*default_statistics_target随机页中选择随机行。...如果表比预期的样本大小小,分析器读取整个表。 大表中,统计数据将不准确。因为分析器不会扫描每一行。即便扫描每一行,统计数据也总会有过期,因为表中数据一直在变化。...无论如何,我们不需要统计数据那么精确:高达一个数量级的变化仍然足够准确以产生适当的计划。让我们创建一个禁用自动vacuum的表的副本flights,以便我们可以控制何时进行分析。...此数据存储在pg_statistic系统表中,可以使用pg_stats视图方便地显示。 NULL值的分数是列级别的统计信息。被指定为pg_stats中的null_frac。...(连同最小值和最大值)足以进行准确的估计。

    1.1K20

    select count(*) 底层到底干了啥?

    (4)JOIN 对象有 2 个重要的方法: JOIN::optimize(), JOIN::exec(),分别用于进行查询语句的优化 和 查询语句的执行。...(2)计数一行: 代码层面,将会在 evaluate_join_record 函数中对所读取的行进行评估,看其是否应当计入 count 中 ( 即是否要 count++ )。...简单来说,COUNT(arg) 本身为 MySQL 的函数操作,对于一行来说,若括号内的参数 arg ( 某列或整行 ) 的值若不是 NULL,则 count++,否则对该行不予计数。...2、每张 MyISAM 表中存放了一个 meta 信息-count 值,在内存中与文件中各有一份,内存中的 count 变量值通过读取文件中的 count 值来进行初始化。...4、内存中的 count 值与文件中的 count 值由写操作来进行更新,其一致性由表级锁来保证。 5、表级锁保证的写入串行化使得,同一时刻所有用户线程的读操作要么被锁,要么只会看到一种数据状态。

    1.3K20

    MySQL数据库3分组与单表、多表查询

    2.1.1聚合函数 max(列)求出列中的最大值 min(列)求出列中的最小值 sum(列)对列中的数据求和 count(列)对列中的数据计数 avg(列)对列中的数据计算平均数 例子见group by...count(字段名),按照条件对字段中的数据进行计数。 例子: 1.以性别为例, 进行分组, 统计一下男生和女生的人数是多少个。...如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。...使用外键的原因: 1.减少占用的内存空间 2.只需要修改主表的数据,从表的数据也会相应的跟着修改 3.1一对多 一对多指一个主表中的数据和从表中的数据是一对多的关系,如下例,一个部门可以有多个员工。...,从表之间的每个数据之间的关系就是多对多,如下图,一个boy可以和多个girl约会,一个girl也可以和多个boy约会。

    6.6K50

    select count(*) 底层究竟做了什么?

    JOIN对象有 2 个重要的方法: JOIN::optimize(), JOIN::exec(),分别用于进行查询语句的优化 和 查询语句的执行。...计数一行: 代码层面,将会在 evaluate_join_record函数中对所读取的行进行评估,看其是否应当计入 count中 ( 即是否要count++ )。...简单来说,COUNT(arg) 本身为 MySQL 的函数操作,对于一行来说,若括号内的参数 arg ( 某列或整行 )的值若不是 NULL,则 count++,否则对该行不予计数。...每张MyISAM表中存放了一个 meta 信息-count 值,在内存中与文件中各有一份,内存中的 count 变量值通过读取文件中的 count 值来进行初始化。...内存中的 count 值与文件中的 count 值由写操作来进行更新,其一致性由表级锁来保证。 表级锁保证的写入串行化使得,同一时刻所有用户线程的读操作要么被锁,要么只会看到一种数据状态。

    1.3K30

    select count(*)底层究竟做了什么?

    JOIN对象有 2 个重要的方法: JOIN::optimize(), JOIN::exec(),分别用于进行查询语句的优化 和 查询语句的执行。...计数一行: 代码层面,将会在 evaluate_join_record函数中对所读取的行进行评估,看其是否应当计入 count中 ( 即是否要count++ )。...简单来说,COUNT(arg) 本身为 MySQL 的函数操作,对于一行来说,若括号内的参数 arg ( 某列或整行 )的值若不是 NULL,则 count++,否则对该行不予计数。...每张MyISAM表中存放了一个 meta 信息-count 值,在内存中与文件中各有一份,内存中的 count 变量值通过读取文件中的 count 值来进行初始化。...内存中的 count 值与文件中的 count 值由写操作来进行更新,其一致性由表级锁来保证。 表级锁保证的写入串行化使得,同一时刻所有用户线程的读操作要么被锁,要么只会看到一种数据状态。

    1.2K40

    一文读懂 select count(*) 底层原理

    (4)JOIN 对象有 2 个重要的方法: JOIN::optimize(), JOIN::exec(),分别用于进行查询语句的优化 和 查询语句的执行。...(2)计数一行: 代码层面,将会在 evaluate_join_record 函数中对所读取的行进行评估,看其是否应当计入 count 中 ( 即是否要 count++ )。...简单来说,COUNT(arg) 本身为 MySQL 的函数操作,对于一行来说,若括号内的参数 arg ( 某列或整行 ) 的值若不是 NULL,则 count++,否则对该行不予计数。...2、每张 MyISAM 表中存放了一个 meta 信息-count 值,在内存中与文件中各有一份,内存中的 count 变量值通过读取文件中的 count 值来进行初始化。...4、内存中的 count 值与文件中的 count 值由写操作来进行更新,其一致性由表级锁来保证。 5、表级锁保证的写入串行化使得,同一时刻所有用户线程的读操作要么被锁,要么只会看到一种数据状态。

    3.4K20

    select count(*) 底层究竟做了什么?

    JOIN对象有 2 个重要的方法: JOIN::optimize(), JOIN::exec(),分别用于进行查询语句的优化 和 查询语句的执行。...计数一行: 代码层面,将会在 evaluate_join_record函数中对所读取的行进行评估,看其是否应当计入 count中 ( 即是否要count++ )。...简单来说,COUNT(arg) 本身为 MySQL 的函数操作,对于一行来说,若括号内的参数 arg ( 某列或整行 )的值若不是 NULL,则 count++,否则对该行不予计数。...每张MyISAM表中存放了一个 meta 信息-count 值,在内存中与文件中各有一份,内存中的 count 变量值通过读取文件中的 count 值来进行初始化。...内存中的 count 值与文件中的 count 值由写操作来进行更新,其一致性由表级锁来保证。 表级锁保证的写入串行化使得,同一时刻所有用户线程的读操作要么被锁,要么只会看到一种数据状态。

    2.2K20

    select count(*) 底层到底干了啥?

    (4)JOIN 对象有 2 个重要的方法: JOIN::optimize(), JOIN::exec(),分别用于进行查询语句的优化 和 查询语句的执行。...(2)计数一行: 代码层面,将会在 evaluate_join_record 函数中对所读取的行进行评估,看其是否应当计入 count 中 ( 即是否要 count++ )。...简单来说,COUNT(arg) 本身为 MySQL 的函数操作,对于一行来说,若括号内的参数 arg ( 某列或整行 ) 的值若不是 NULL,则 count++,否则对该行不予计数。...2、每张 MyISAM 表中存放了一个 meta 信息-count 值,在内存中与文件中各有一份,内存中的 count 变量值通过读取文件中的 count 值来进行初始化。...4、内存中的 count 值与文件中的 count 值由写操作来进行更新,其一致性由表级锁来保证。 5、表级锁保证的写入串行化使得,同一时刻所有用户线程的读操作要么被锁,要么只会看到一种数据状态。

    1.3K00

    MySQL

    从表内查询指定数据 -- 查询员工表中工资前五名的员工信息 -- 1....; -- 条件限制员工表中的部门Id = 部门表中的部门id -- 查询所有部门部门名,和对应的员工信息id和first_name -- 给予表格一个别名,方便使用 select d.department_name...部门表中的部门id 7.12.4 内连接查询 inner join on 四张表 -- 查询所有员工对应的ID号,名字,部门名称,和国家对应名字 select te.employee_id, te.first_name...它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。...数据约束 10.1 默认值 default -- 创建数据表的过程中,指定字段可以带有默认值,如果用户没有指定数据的情况下,当前 -- 字段会采用默认值方式来进行数据赋值操作。

    1.1K10

    事件记录 | performance_schema全方位介绍

    临时表,该值是table,注意:对于在join查询中select_type为DERIVED,subquery等的表可能不记录事件信息也不进行统计  * 4)、OBJECT_INSTANCE_BEGIN列是内存中的地址...如果值大于1,则表示该事件对应一个批量I/O操作。以下分别对单个表IO和批量表IO的区别进行描述: MySQL的join查询使用嵌套循环实现。...performance_schema instruments的作用是在join查询中提供对每个表的扫描行数和执行时间进行统计。...,该表的扫描行数可能增加也可能减少,例如:如果t3表扇出大于1,则大多数row fetch操作都是针对t3表,假如join查询从t1表访问10行记录,然后使用t1表驱动查询t2表,t1表的每一行都会扫描...状态变量一样的计数值,但是这里只用于这个事件中的语句统计而不针对全局、会话级别  SELECT_FULL_JOIN:像Select_full_join状态变量一样的计数值,但是这里只用于这个事件中的语句统计而不针对全局

    2.9K120

    SQL聚合函数 COUNT

    SQL聚合函数 COUNT 返回表或指定列中的行数的聚合函数。...COUNT(*)不接受表达式参数,也不使用任何特定列的信息。 COUNT(*)返回指定表或视图中的行数,但不消除重复项。 它分别计数每一行,包括包含NULL值的行。...COUNT(*)以整数形式返回表中行数的计数。 COUNT(*)计数所有行,无论是否存在重复的字段值或NULL值。 COUNT可以在引用表或视图的SELECT查询或子查询中使用。...要将每个字母大小写变量作为一个不同的值进行计数,请使用count (distinct (%EXACT(field)))。 COUNT DISTINCT不将NULL视为一个不同的值。...没有行返回 如果没有选择行,COUNT返回0或NULL,这取决于查询: 如果除了提供给聚合函数的字段之外,选择列表不包含对FROM子句表中的字段的任何引用,那么COUNT返回0。

    3.8K21

    学习SQLite之路(三)

    在一个表中可以有多个 UNIQUE 列,但只能有一个主键。   在设计数据库表时,主键是很重要的。主键是唯一的 ID。   ...在 SQLite 中,主键可以是 NULL,这是与其他数据库不同的地方。   主键是表中的一个字段,唯一标识数据库表中的各行/记录。主键必须包含唯一值。主键列不能有 NULL 值。   ...一旦主连接计算完成,外连接(OUTER JOIN)将从一个或两个表中任何未连接的行合并进来,外连接的列使用 NULL 值,将它们附加到结果表中。...SQLite NULL值: SQLite 的 NULL 是用来表示一个缺失值的项。表中的一个 NULL 值是在字段中显示为空白的一个值。 带有 NULL 值的字段是一个不带有值的字段。...(2)NULL 值在选择数据时会引起问题,因为当把一个未知的值与另一个值进行比较时,结果总是未知的,且不会包含在最后的结果中。 6.

    3K70

    MySQL

    表的结构 1.1 表名 一般使用英文小写字母来约定表,多个单词之间使用_分隔 1.2 主键 主键是一个特殊字段 表格可以没有主键,但最多只能拥有一个主键 主键的值不能为NULL ,必须有对应的值 主键的值必须绝对唯一的...,即不能出现两个相同的主键值,如名字就不可以作为主键,因为会有重名 一般使用主键和其他表进行关联 1.3 SQL常用数据类型 类型 含义 VARCHAR 可变的长字符串,可以类比于Java中的String...类型 INT 整形,和Java中的int类型一致 DOUBLE 浮点型,和Java中的double类型一致,一般不加长度限制 DATETIME 时间类型,长度为0,格式为YYYY-MM-DD HH:MM...NULL 不是空值,空值不占空间,NULL占用存储空间 如何处理空值 IS NULL: 当列的空值是NULL时,这个·运算符返回true IS NOT NULL: 当列的值不为NULL,这个运算符返回...,比如rank,dense_rank,row_number等 聚集函数,如sum,avg,count,max,min等 功能 同时具有分组和排序的功能 不减少原表的行数 注意 原则只能写在select子句中

    76441

    SQL必知必会总结2-第8到13章

    -- 指定特定的行 笔记:AVG()函数会忽略掉值NULL的行 2、COUNT()函数 COUNT()函数进行计数,可以使用它来确定表中的函数或者符合特定条件的行的数目,两种使用情况: count...(*):不管是空值(NULL)还是非空值,都会统计进去 count(column):对特定的列进行计数,会忽略表该列的NULL值 SELECT COUNT(*) AS num_cust FROM Customers...GROUP BY子句中列出 如果分组中包含具有NULL的行,则NULL将作为一个分组返回;如果列中出现多个NULL,它们将分成一个组 GROUP BY子句必须在WHERE子句之后,ORDER BY子句之前...2、自然联结 无论何时对表进行联结,应该至少有一列不止出现在一个表中(被联结的列)。自然联结排除多次出现,是每一列只返回一次。...,比如下面的场景中: 对每个顾客下的订单数进行统计,包含那些至今尚未下单的顾客 列出所有产品以及订购数量,包含没有人订购的产品 计算平均销售规模,包含那些至今尚未下订单的顾客 当联结中包含了那些在相关表中没有关联行的行

    2.3K21

    MIT 6.830数据库系统 -- lab three

    ;通常,计划的成本与中间连接和选择的基数(生成的元组的数量)以及筛选器和连接谓词的选择性有关 通过这些统计数据以最优的方式排序连接和选择操作,并从多个备选方案中为连接算法选择最佳实现 在本次实验,我们将会通过代码实现这些功能...类和方法的将会在接下来的文章进行详细的解释,基本的操作如下: Parser.java初始化时构造了表统计数据的集合(存储在statsMap容器中),它接下来就等待输入查询,并调用查询的parseQuery...scancost(t1)是扫描表t1的I/O开销,joincost(t1, t2)是连接t1和t2的CPU开销,为了使I/O和CPU成本具有可比性,通常使用一个恒定的比例因子,例如: cost(predicate...,记录数看成桶的宽: 计算表中每个属性的最大值和最小值(通过一次扫描实现) 对表中的每个属性构造一个柱状图。...通常,查询计划的代价与中间进行连接和选择产生的记录数的基数有关,以及过滤和连接的选择性。 通过这些统计信息,我们可以选择最佳的连接和选择顺序,从多个查询方案中选择一个最佳的计划去执行。

    30640

    SQL命令 UPDATE(一)

    如果在这里在两个选择表之间指定逗号, IRIS将对表执行CROSS JOIN,并从JOIN操作的结果表中检索数据。...可以直接更新表中的数据,也可以通过视图进行更新,或者使用括在括号中的子查询进行更新。 通过视图进行更新受制于需求和限制,如CREATE view中所述。...列名和值: 更新不能包含重复的字段名。 尝试指定两个具有相同名称的字段的更新将导致SQLCODE -377错误。 不能更新已被另一个并发进程锁定的字段。...唯一的例外是将SERIAL (%Library.Counter)字段添加到具有现有数据的表时。 对于这个添加的计数器字段,现有的记录将具有NULL值。...用VALUELIST参数定义的持久化类的属性只能接受VALUELIST中列出的值中的一个作为有效值,或者不提供值(NULL)。 VALUELIST有效值区分大小写。

    2.9K20

    MySQL入门基础教程大全

    经过研究和对使用中问题的总结,对于设计数据库提出了一些规范,这些规范被称为范式(Normal Form) 目前有迹可寻的共有8种范式,一般需要遵守3范式即可 ◆ 第一范式(1NF):强调的是列的原子性...[以从表的结果为主] 查询的结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充 select 字段1,字段2... from 主表 right join 从表 on 主表...查询的结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充 语法 select * from 表1 left join 表2 on 表1.列 = 表2.列 例如,使用左连接查询学生表与成绩表...from 主表 left join 从表1 on 主表.主键=从表1.外键 left join 从表2 on 主表.主键=从表2.外键 # 这里和从表2连接的on条件看实际情况,也会出现从表...1.主键=从表2.外键的情况 left join 从表3 on 主表.主键=从表3.外键 # 这里可以是(从表1或从表2).主键=从表2.外键的情况 left join ...

    1.6K11

    企业面试题|最常问的MySQL面试题集合(二)

    OUTER JOIN, 以左表为主,先查询出左表,按照ON后的关联条件匹配右表,没有匹配到的用NULL填充,可以简写成LEFT JOIN 右外连接:RIGHT OUTER JOIN, 以右表为主,先查询出右表...,才考虑使用关联查询 问题20: 为了记录足球比赛的结果,设计表如下: team:参赛队伍表 match:赛程表 其中,match赛程表中的hostTeamID与guestTeamID都和team表中的...确保GROUP BY和ORDER BY只有一个表中的列,这样MySQL才有可能使用索引。...2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null可以在num上设置默认值...0,确保表中num列没有null值,然后这样查询:select id from t where num= 3.应尽量避免在 where 子句中使用!

    1.8K20
    领券