精华内容
下载资源
问答
  • 在Access2010数据库中,要在表中建立“性别字段,并按与要求用逻辑值表示,其数据类型应当是()_学小易找答案
    2021-02-11 21:59:01

    【填空题】在Access2010数据库中,表结构的设计和维护是在表的()视图中完成的。

    【单选题】在Access2010数据库的下列字段类型中,字段大小不固定的是()

    【单选题】对Access2010表中某一个字段建立索引时,若其值由重复,可选择()索引

    【单选题】毒而致病的特点()

    【单选题】在Access2010数据库中,如果输入掩码设置为“a”,则在输入数据时该位置上可以接受的合法输入是()

    【填空题】在Access2010数据库中,“数字”类型的字段大小设置为“字节”后,可以保存的数据范围是()

    【填空题】在Access2010数据库中,索引将改变记录的逻辑顺序,但是不能改变记录的()

    【单选题】内陷发生的根本原因是()

    【单选题】在Access2010数据库中,可用来存储图片的字段类型是()

    【单选题】在SQL语言的SELECT语句中,用于实现选择运算的子句是

    【填空题】在Access2010数据库中,确定表的的结构就是确定表中各字段的()、()和属性等。

    【填空题】________控件,既可以输入数据,也可以在数据列表中进行选择。

    【单选题】关于Access2010的索引,下列叙述中错误的是()

    【其它】上机作业练习一:原理图绘制《流水灯》

    【单选题】在Access2010数据库的表设计视图中,不能进行的操作是()

    【单选题】在Access2010数据库中,定义字段默认值的含义是()

    【单选题】在Access2010数据库中,对数据表进行筛选操作的结果是()

    【单选题】在Access2010数据表的某个字段中要保存一个WORD文档和一个PPT文档,则该字段应采用的字段类型是()

    【单选题】关于Access2010数据库的下列说法中,()是正确的。

    【单选题】在成绩表中要查找成绩>=80且成绩<=90的学生,正确的条件表达式是

    【填空题】在Access2010数据库中,要在表中建立“性别”字段,并按与要求用逻辑值表示,其数据类型应当是()

    【单选题】在Access2010数据库中,如果想通过设置多个筛选条件来浏览数据表中相关记录,并按一定的顺序排列,应使用()方法

    【单选题】在Access2010数据库中,为了保持表之间的完整性,要求在父表中修改相关记录时,子表中的相关记录也随之更改,为此需要设置()约束

    【单选题】如果在Access2010数据表中要存放声音文件,应当建立()数据类型的字段。

    【填空题】在窗体页面中添加计算文本框,在该文本框中输入________________将显示系统当前日期。

    【填空题】在Access2010数据库中,表的外观设置实际上是指设置()视图中显示的二维表格的外观。

    【单选题】在Access2010数据库中,不允许有重复数据的字段类型是 ()

    【单选题】在必须输入字母A~Z或数字0~9数据库中设计表时,如果将字段的输入掩码设置为“LLLL”,则该字段能够接受的输入是()

    【单选题】下列关于Access2010数据库中表的主键描述,错误的是()

    【单选题】痰饮淤血()

    【单选题】在Access2010数据库中,“文本”数据类型的字段最大为()个字符

    【单选题】外科疾病的主要发病机制是()

    【填空题】在Access2010数据库中,表的主键用于保证表中的每一条记录都是()的。

    【单选题】在Access2010数据库中,与输入掩码“###-######”对应的正确输入是()

    【单选题】在Access2010数据库中,下列对数据输入无法起到约束作用的是()

    【单选题】关于Access查询中的数据源,下列说法中正确的是

    【单选题】气血与疮疡的关系上,不正确的描述是()

    【单选题】在Access2010数据库中“日期/时间”类型的字段大小为()

    【单选题】在Access2010数据库的下列字段类型中,不能建立索引的是()

    【单选题】"学生表"中有学号、姓名、性别和入学成绩等字段。执行下面的SQL命令后的结果是。 Select Avg(入学成绩) From 学生表 Group by 性别

    【单选题】在Access2010数据库中,以下()方法不能创建表

    【单选题】关于Access2010数据库中字段名称的命名规则,以下错误的是 ()

    【填空题】在创建主/子窗体之前,必须设置___________之间的一对多关系

    【单选题】在Access2010数据库中有一张“学生”表,要使其年龄字段的取值范围在14到50之间,则在“有效性规则”属性框中应该输入的表达式为()

    【填空题】要在Access2010数据库中使用Excel电子表格中存储的数据,应该采用()或()方式创建表。

    【填空题】为了让Access2010数据库中的某些列一直显示在屏幕上,可以将这些列()

    【填空题】在Access2010数据库中,向已连理了主键的表中输入记录时,主键字段中不允许有重复,也不允许是()值。

    【单选题】Access2010数据库中不能导入的外部数据源是()

    【简答题】请结合自己的专业、研究方向、导师下达的科研任务或感兴趣的方面,拟订一个包含有两个概念的检索课题,并进行初步分析,按下列格式答题。 (1)检索课题名称: (2)提取检索课题中涉及的概念: (3)可能的检索词(即表达第2点中的概念,有哪些题面词、扩展词): (4)用一个逻辑表达式表达第3点中列出的检索词之间的逻辑关系: (5)你认为可能会使用到的检索技术有:

    【其它】上机练习二:原理图的绘制 教材P85-87页 T6、T7、T8、T9

    更多相关内容
  • 字段名称 字段类型 大小 字段说明 字段备注 Sno varchar2 10 学生学号 主键 Sname varchar2 8 学生姓名 Ssex varchar2 2 性别 Sex in (‘男’,’女’), 默认值 ‘男’ Sid varchar2 18 身份证号 唯一键 Sbirthday ...
  • Mysql数据库字段数据类型、长度详解

    千次阅读 2021-01-19 13:21:06
    这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的。 MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。例如,指定一个字段...

    一、数值类型

    列类型 需要的存储量

    TINYINT 1 字节

    SMALLINT 2 个字节

    MEDIUMINT 3 个字节

    INT 4 个字节

    INTEGER 4 个字节

    BIGINT 8 个字节

    FLOAT(X) 4 如果 X < = 24 或 8 如果 25 < = X < = 53

    FLOAT 4 个字节

    DOUBLE 8 个字节

    DOUBLE PRECISION 8 个字节

    REAL 8 个字节

    DECIMAL(M,D) M字节(D+2 , 如果M < D)

    NUMERIC(M,D) M字节(D+2 , 如果M < D)

    MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补。

    面列出了各种数值类型以及它们的允许范围和占用的内存空间。

    类型 大小 范围(有符号) 范围(无符号) 用途

    TINYINT 1 字节 (-128,127) (0,255) 小整数值

    SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值

    MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值

    INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值

    BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值

    FLOAT 4 字节 (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38)

    单精度 浮点数值

    DOUBLE 8 字节 (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

    双精度 浮点数值

    DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

    INT 类型

    在 MySQL 中支持的 5 个主要整数类型是 TINYINT,SMALLINT,MEDIUMINT,INT 和 BIGINT。这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的。

    MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。例如,指定一个字段的类型为 INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。

    万一我们需要对一个字段存储一个超出许可范围的数字,MySQL 会根据允许范围最接近它的一端截短后再进行存储。还有一个比较特别的地方是,MySQL 会在不合规定的值插入表前自动修改为 0。

    UNSIGNED(未签署) 修饰符规定字段只保存正值。因为不需要保存数字的正、负符号,可以在储时节约一个“位”的空间。从而增大这个字段可以存储的值的范围。

    ZEROFILL(零填充) 修饰符规定 0(不是空格)可以用来真补输出的值。使用这个修饰符可以阻止 MySQL 数据库存储负值。

    FLOAT、DOUBLE 和 DECIMAL 类型

    MySQL 支持的三个浮点类型是 FLOAT、DOUBLE 和 DECIMAL 类型。FLOAT 数值类型用于表示单精度浮点数值,而 DOUBLE 数值类型用于表示双精度浮点数值。

    与整数一样,这些类型也带有附加参数:一个显示宽度指示器和一个小数点指示器。比如语句 FLOAT(7,3) 规定显示的值不会超过 7 位数字,小数点后面带有 3 位数字。

    对于小数点后面的位数超过允许范围的值,MySQL 会自动将它四舍五入为最接近它的值,再插入它。

    DECIMAL 数据类型用于精度要求非常高的计算中,这种类型允许指定数值的精度和计数方法作为选择参数。精度在这里指为这个值保存的有效数字的总个数,而计数方法表示小数点后数字的位数。比如语句 DECIMAL(7,3) 规定了存储的值不会超过 7 位数字,并且小数点后不超过 3 位。

    忽略 DECIMAL 数据类型的精度和计数方法修饰符将会使 MySQL 数据库把所有标识为这个数据类型的字段精度设置为 10,计算方法设置为 0。

    UNSIGNED(未签署) 和 ZEROFILL(零填充) 修饰符也可以被 FLOAT、DOUBLE 和 DECIMAL 数据类型使用。并且效果与 INT 数据类型相同。

    2、日期和时间类型

    列类型 需要的存储量

    DATE 3 个字节

    DATETIME 8 个字节

    TIMESTAMP 4 个字节

    TIME 3 个字节

    YEAR 1 字节

    在处理日期和时间类型的值时,MySQL 带有 5 个不同的数据类型可供选择。它们可以被分成简单的日期、时间类型,和混合日期、时间类型。根据要求的精度,子类型在每个分类型中都可以使用,并且 MySQL 带有内置功能可以把多样化的输入格式变为一个标准格式

    类型 大小(字节) 范围 格式 用途

    DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值

    TIME 3 ‘-838:59:59′/’838:59:59′ HH:MM:SS 时间值或持续时间

    YEAR 1 1901/2155 YYYY 年份值

    DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值

    TIMESTAMP 8 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

    DATE、TIME 和 TEAR 类型

    MySQL 用 DATE 和 TEAR 类型存储简单的日期值,使用 TIME 类型存储时间值。这些类型可以描述为字符串或不带分隔符的整数序列。如果描述为字符串,DATE 类型的值应该使用连字号作为分隔符分开,而 TIME 类型的值应该使用冒号作为分隔符分开。

    需要注意的是,没有冒号分隔符的 TIME 类型值,将会被 MySQL 理解为持续的时间,而不是时间戳。

    MySQL 还对日期的年份中的两个数字的值,或是 SQL 语句中为 TEAR 类型输入的两个数字进行最大限度的通译。因为所有 TEAR 类型的值必须用 4 个数字存储。MySQL 试图将 2 个数字的年份转换为 4 个数字的值。把在 00-69 范围内的值转换到 2000-2069 范围内。把 70-99 范围内的值转换到 1970-1979 之内。如果 MySQL 自动转换后的值并不符合我们的需要,请输入 4 个数字表示的年份。

    DATETIME 和 TIMESTAMP 类型

    除了日期和时间数据类型,MySQL 还支持 DATEYIME 和 TIMESTAMP 这两种混合类型。它们可以把日期和时间作为单个的值进行存储。这两种类型通常用于自动存储包含当前日期和时间的时间戳,并可在需要执行大量数据库事务和需要建立一个调试和审查用途的审计跟踪的应用程序中发挥良好作用。

    如果我们对 TIMESTAMP 类型的字段没有明确赋值,或是被赋与了 null 值。MySQL 会自动使用系统当前的日期和时间来填充它。

    3、字符串类型

    列类型 需要的存储量

    CHAR(M) M字节,1 <= M <= 255

    VARCHAR(M) L+1 字节, 在此L <= M和1 <= M <= 255

    TINYBLOB, TINYTEXT L+1 字节, 在此L< 2 ^ 8

    BLOB, TEXT L+2 字节, 在此L< 2 ^ 16

    MEDIUMBLOB, MEDIUMTEXT L+3 字节, 在此L< 2 ^ 24

    LONGBLOB, LONGTEXT L+4 字节, 在此L< 2 ^ 32

    ENUM('value1','value2',…) 1 或 2 个字节, 取决于枚举值的数目(最大值65535)

    SET('value1','value2',…) 1,2,3,4或8个字节, 取决于集合成员的数量(最多64个成员)

    MySQL 提供了 8 个基本的字符串类型,可以存储的范围从简单的一个字符到巨大的文本块或二进制字符串数据。

    类型 大小 用途

    CHAR 0-255字节 定长字符串

    VARCHAR 0-255字节 变长字符串

    TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串

    TINYTEXT 0-255字节 短文本字符串

    BLOB 0-65 535字节 二进制形式的长文本数据

    TEXT 0-65 535字节 长文本数据

    MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据

    MEDIUMTEXT 0-16 777 215字节 中等长度文本数据

    LOGNGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据

    LONGTEXT 0-4 294 967 295字节 极大文本数据

    CHAR 和 VARCHAR 类型

    CHAR 类型用于定长字符串,并且必须在圆括号内用一个大小修饰符来定义。这个大小修饰符的范围从 0-255。比指定长度大的值将被截短,而比指定长度小的值将会用空格作填补。

    CHAR 类型可以使用 BINARY 修饰符。当用于比较运算时,这个修饰符使 CHAR 以二进制方式参于运算,而不是以传统的区分大小写的方式。

    CHAR 类型的一个变体是 VARCHAR 类型。它是一种可变长度的字符串类型,并且也必须带有一个范围在 0-255 之间的指示器。CHAR 和 VARCHGAR 不同之处在于 MuSQL 数据库处理这个指示器的方式:CHAR 把这个大小视为值的大小,不长度不足的情况下就用空格补足。而 VARCHAR 类型把它视为最大值并且只使用存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)来存储值。所以短于指示器长度的 VARCHAR 类型不会被空格填补,但长于指示器的值仍然会被截短。

    因为 VARCHAR 类型可以根据实际内容动态改变存储值的长度,所以在不能确定字段需要多少字符时使用 VARCHAR 类型可以大大地节约磁盘空间、提高存储效率。

    VARCHAR 类型在使用 BINARY 修饰符时与 CHAR 类型完全相同。

    TEXT 和 BLOB 类型

    对于字段长度要求超过 255 个的情况下,MySQL 提供了 TEXT 和 BLOB 两种类型。根据存储数据的大小,它们都有不同的子类型。这些大型的数据用于存储文本块或图像、声音文件等二进制数据类型。

    TEXT 和 BLOB 类型在分类和比较上存在区别。BLOB 类型区分大小写,而 TEXT 不区分大小写。大小修饰符不用于各种 BLOB 和 TEXT 子类型。比指定类型支持的最大范围大的值将被自动截短。

    3、复合类型

    MySQL 还支持两种复合数据类型 ENUM 和 SET,它们扩展了 SQL 规范。虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型。一个 ENUM 类型只允许从一个集合中取得一个值;而 SET 类型允许从一个集合中取得任意多个值。

    ENUM 类型

    ENUM 类型因为只允许在集合中取得一个值,有点类似于单选项。在处理相互排拆的数据时容易让人理解,比如人类的性别。ENUM 类型字段可以从集合中取得一个值或使用 null 值,除此之外的输入将会使 MySQL 在这个字段中插入一个空字符串。另外如果插入值的大小写与集合中值的大小写不匹配,MySQL 会自动使用插入值的大小写转换成与集合中大小写一致的值。

    ENUM 类型在系统内部可以存储为数字,并且从 1 开始用数字做索引。一个 ENUM 类型最多可以包含 65536 个元素,其中一个元素被 MySQL 保留,用来存储错误信息,这个错误值用索引 0 或者一个空字符串表示。

    MySQL 认为 ENUM 类型集合中出现的值是合法输入,除此之外其它任何输入都将失败。这说明通过搜索包含空字符串或对应数字索引为 0 的行就可以很容易地找到错误记录的位置。

    SET 类型

    SET 类型与 ENUM 类型相似但不相同。SET 类型可以从预定义的集合中取得任意数量的值。并且与 ENUM 类型相同的是任何试图在 SET 类型字段中插入非预定义的值都会使 MySQL 插入一个空字符串。如果插入一个即有合法的元素又有非法的元素的记录,MySQL 将会保留合法的元素,除去非法的元素。

    一个 SET 类型最多可以包含 64 项元素。在 SET 元素中值被存储为一个分离的“位”序列,这些“位”表示与它相对应的元素。“位”是创建有序元素集合的一种简单而有效的方式。并且它还去除了重复的元素,所以 SET 类型中不可能包含两个相同的元素。

    希望从 SET 类型字段中找出非法的记录只需查找包含空字符串或二进制值为 0 的行。

    展开全文
  • 1 数据库建立索引常用的规则如下:1、表的主键、外键必须有索引...6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:A、正确选...

    1 数据库建立索引常用的规则如下:

    1、表的主键、外键必须有索引;

    2、数据量超过300的表应该有索引;

    3、经常与其他表进行连接的表,在连接字段上应该建立索引;

    4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

    5、索引应该建在选择性高的字段上;

    6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

    7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:

    A、正确选择复合索引中的主列字段,一般是选择性较好的字段;

    B 、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;

    C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;

    D、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

    8、频繁进行数据操作的表,不要建立太多的索引;

    9、删除无用的索引,避免对执行计划造成负面影响;

    以上是一些普遍的建立索引时的判断依据。

    索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。

    因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。 另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。

    总的来说,小型表肯定不建索引,

    或者数据库记录在亿条数据级以上,还是建议使用非关系型数据库。

    还有些特殊字段的数据库,比如BLOB,CLOB字段肯定也不适合建索引。

    其实这个问题更感觉偏向于做软件项目的一种经验。

    2、对千万级MySQL数据库建立索引的事项及提高性能的手段

    一、注意事项:

    首先,应当考虑表空间和磁盘空间是否足够。我们知道索引也是一种数据,在建立索引的时候势必也会占用大量表空间。因此在对一大表建立索引的时候首先应当考虑的是空间容量问题。

    其次,在对建立索引的时候要对表进行加锁,因此应当注意操作在业务空闲的时候进行。

    二、性能调整方面:

    首当其冲的考虑因素便是磁盘I/O。物理上,应当尽量把索引与数据分散到不同的磁盘上(不考虑阵列的情况)。逻辑上,数据表空间与索引表空间分开。这是在建索引时应当遵守的基本准则。

    其次,我们知道,在建立索引的时候要对表进行全表的扫描工作,因此,应当考虑调大初始化参数db_file_multiblock_read_count的值。一般设置为32或更大。

    再次,建立索引除了要进行全表扫描外同时还要对数据进行大量的排序操作,因此,应当调整排序区的大小。

    9i之前,可以在session级别上加大sort_area_size的大小,比如设置为100m或者更大。

    9i以后,如果初始化参数workarea_size_policy的值为TRUE,则排序区从pga_aggregate_target里自动分配获得。

    最后,建立索引的时候,可以加上nologging选项。以减少在建立索引过程中产生的大量redo,从而提高执行的速度。

    MySql在建立索引优化时需要注意的问题

    设计好MySql的索引可以让你的数据库飞起来,大大的提高数据库效率。设计MySql索引的时候有一下几点注意:

    1,创建索引

    对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会引起致命的性能下降。但是也不是什么情况都非得建索引不可,比如性别可能就只有两个值,建索引不仅没什么优势,还会影响到更新速度,这被称为过度索引。

    2,复合索引

    比如有一条语句是这样的:

    select * from users where area='beijing' and age=22;

    如果我们是在area和age上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效

    率,但是如果在area、age两列上创建复合索引的话将带来更高的效率。如果我们创建了(area, age,

    salary)的复合索引,那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀

    特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。

    3,索引不会包含有NULL值的列

    只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。

    4,使用短索引

    对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

    5,排序的索引问题

    mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。

    6,like语句操作

    一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%a%” 不会使用索引而like “aaa%”可以使用索引。

    7,不要在列上进行运算

    select * from users where YEAR(adddate)

    8,不使用NOT IN和操作

    NOT IN和操作都不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替,id3则可使用id>3 or id

    添加索引示例:

    CREATE INDEX IDX_AUDITSTATUS ON [shanghaiDB].[dbo].[Activity](AUDITSTATUS) WITH(ONLINE=ON)

    CREATE INDEX IDX_ANUMMID ON [nantongDB].[dbo].[Orders](ANUM,MID) WITH(ONLINE=ON)

    CREATE INDEX IDX_SiteCode ON Usercenter.[dbo].MO(SiteCode) WITH(ONLINE=ON)

    CREATE INDEX IDX_AccessDt ON [all].[dbo].[AccessLog](AccessDt) WITH(ONLINE=ON)

    Create index注意n如果是大表建立索引,切记加上ONLINE参数

    这几天在做数据库的优化,有个2亿记录的表,发现需要添加一个联合索引,结果就采用普通的create index index_name on tablename (entp_id,sell_date),结果悲剧了,把所有的DML语句都阻塞了,导致系统不能正常使用,还好是晚上10点,用户不是非常多,1个小时候,索引结束,阻塞解决;

    上网查了一下,如果加上 online参数后,就可以在线做索引,而不需要阻塞所有的DML语句,血的教训,拿出来与各位共勉,具体online与不加online区别如下:

    DML操作对create index 的影响。 如果在create的时候,有其他的进程在对这个index 所对应的数据进行DML操作,create会受影响:

    SQL> create table test (id number, name varchar2(20));

    Table created.

    然后重新开一个session:

    SQL> insert into test values (1,'lms');

    1 row created.

    SQL> create index t1 on test(id);

    create index t1 on test(id)

    *

    ERROR at line 1:

    ORA-00054: resource busy and acquire with NOWAIT specified

    加online这个参数,这个参数加上以后,除了create过程中index 保持online状态,Oracle还会在create index之前等待所有DML操作结束,然后得到DDL锁,开始create.

    SQL> create index t1 on test(id) online;

    SQL> commit;

    Commit complete.

    Index altered.

    如果不commit,上面的操作就会一直hold。

    所以以后create索引和rebuild索引的时候最好加上online。

    到此这篇关于浅谈Mysql哪些字段适合建立索引的文章就介绍到这了,更多相关Mysql字段索引内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    展开全文
  • 那些字段适不适合建索引?

    千次阅读 2021-02-02 14:36:59
    数据库建立索引常用的规则如下:表...索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:正确选择复合索引中的主列字段,一般是选择性...

    数据库建立索引常用的规则如下:

    表的主键、外键必须有索引;

    数据量超过300的表应该有索引;

    经常与其他表进行连接的表,在连接字段上应该建立索引;

    经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

    索引应该建在选择性高的字段上;

    索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

    复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:

    正确选择复合索引中的主列字段,一般是选择性较好的字段;

    复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;

    如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;

    如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

    频繁进行数据操作的表,不要建立太多的索引;

    删除无用的索引,避免对执行计划造成负面影响;

    以上是一些普遍的建立索引时的判断依据。

    索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。

    因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。 另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。

    总的来说,小型表肯定不建索引,

    或者数据库记录在亿条数据级以上,还是建议使用非关系型数据库。

    还有些特殊字段的数据库,比如BLOB,CLOB字段肯定也不适合建索引。

    其实这个问题更感觉偏向于做软件项目的一种经验。

    对千万级MySQL数据库建立索引的事项及提高性能的手段

    注意事项:

    首先,应当考虑表空间和磁盘空间是否足够。我们知道索引也是一种数据,在建立索引的时候势必也会占用大量表空间。因此在对一大表建立索引的时候首先应当考虑的是空间容量问题。

    其次,在对建立索引的时候要对表进行加锁,因此应当注意操作在业务空闲的时候进行。

    性能调整方面:

    首当其冲的考虑因素便是磁盘I/O。物理上,应当尽量把索引与数据分散到不同的磁盘上(不考虑阵列的情况)。逻辑上,数据表空间与索引表空间分开。这是在建索引时应当遵守的基本准则。

    其次,我们知道,在建立索引的时候要对表进行全表的扫描工作,因此,应当考虑调大初始化参数db_file_multiblock_read_count的值。一般设置为32或更大。

    再次,建立索引除了要进行全表扫描外同时还要对数据进行大量的排序操作,因此,应当调整排序区的大小。

    9i之前,可以在session级别上加大sort_area_size的大小,比如设置为100m或者更大。

    9i以后,如果初始化参数workarea_size_policy的值为TRUE,则排序区从pga_aggregate_target里自动分配获得。

    最后,建立索引的时候,可以加上nologging选项。以减少在建立索引过程中产生的大量redo,从而提高执行的速度。

    MySql在建立索引优化时需要注意的问题

    设计好MySql的索引可以让你的数据库飞起来,大大的提高数据库效率。设计MySql索引的时候有一下几点注意:

    创建索引

    对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会引起致命的性能下降。但是也不是什么情况都非得建索引不可,比如性别可能就只有两个值,建索引不仅没什么优势,还会影响到更新速度,这被称为过度索引。

    复合索引

    比如有一条语句是这样的:select * from users where area=’beijing’ and age=22;

    如果我们是在area和age上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效

    率,但是如果在area、age两列上创建复合索引的话将带来更高的效率。如果我们创建了(area, age,

    salary)的复合索引,那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀

    特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。

    索引不会包含有NULL值的列

    只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。

    使用短索引

    对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

    排序的索引问题

    mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。

    like语句操作

    一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%a%” 不会使用索引而like “aaa%”可以使用索引。

    不要在列上进行运算

    select * from users where

    YEAR(adddate)

    不使用NOT IN和操作

    NOT IN和操作都不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替,id3则可使用id>3 or id

    添加索引示例:

    CREATE INDEX IDX_AUDITSTATUS ON [shanghaiDB].[dbo].[Activity](AUDITSTATUS) WITH(ONLINE=ON)

    CREATE INDEX IDX_ANUMMID ON [nantongDB].[dbo].[Orders](ANUM,MID) WITH(ONLINE=ON)

    CREATE INDEX IDX_SiteCode ON Usercenter.[dbo].MO(SiteCode) WITH(ONLINE=ON)

    CREATE INDEX IDX_AccessDt ON [all].[dbo].[AccessLog](AccessDt) WITH(ONLINE=ON)

    Create index注意n如果是大表建立索引,切记加上ONLINE参数

    这几天在做数据库的优化,有个2亿记录的表,发现需要添加一个联合索引,结果就采用普通的create index index_name on tablename (entp_id,sell_date),结果悲剧了,把所有的DML语句都阻塞了,导致系统不能正常使用,还好是晚上10点,用户不是非常多,1个小时候,索引结束,阻塞解决;

    上网查了一下,如果加上 online参数后,就可以在线做索引,而不需要阻塞所有的DML语句,血的教训,拿出来与各位共勉,具体online与不加online区别如下:

    DML操作对create index 的影响。 如果在create的时候,有其他的进程在对这个index 所对应的数据进行DML操作,create会受影响:

    SQL> create table test (id number, name varchar2(20));

    Table created.

    然后重新开一个session:

    SQL> insert into test values (1,'lms');

    1 row created.

    SQL> create index t1 on test(id);

    create index t1 on test(id)

    *

    ERROR at line 1:

    ORA-00054: resource busy and acquire with NOWAIT specified

    加online这个参数,这个参数加上以后,除了create过程中index 保持online状态,Oracle还会在create index之前等待所有DML操作结束,然后得到DDL锁,开始create.

    SQL> create index t1 on test(id) online;

    SQL> commit;

    Commit complete.

    Index altered.

    如果不commit,上面的操作就会一直hold。

    所以以后create索引和rebuild索引的时候最好加上online。

    展开全文
  • 在数据库中存储性别性别

    千次阅读 2021-01-19 04:00:58
    8 个答案:答案 0 :(得分:164)已经有ISO标准;无需发明自己的方案:根据标准,该列应该被...答案 1 :(得分:74)我将该栏目称为“性别”。Data Type Bytes Taken Number/Range of Values--------------------------...
  • MySQL 字段类型

    千次阅读 2021-01-19 04:50:15
    许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段中的值是否有正负之分(UNSIGNED)或者用零填补(ZEROFILL)。INT在 MySQL 中支持的 5 个主要整数类型...
  • 大小 INDEXES 索引信息,比如类型、唯一性和被涉及的表 IND_COLUMNS 索引列信息,比如索引上的列的排序方式 OBJECTS 对象信息,比如状态和DDL time ROLE_PRIVS 角色权限,比如GRANT 和ADMIN选项 SEGMENTS 表和索引...
  • mysql字段类型与约束条件

    千次阅读 2021-01-19 00:00:01
     单选 只能在给定的范围内选一个值(多选一),如性别 sex 男male/女female set : 多选 在给定的范围内可以选择一个或一个以上的值 ,如(爱好1,爱好2,爱好3...) #enum:多选一 create table t10(id int, name ...
  • 字段属性包含很多内容,如:字段大小、格式、小数位数、输入掩码、标题、默认值、有效性规则、有效性文本、必填字段、允许空字符串、索引等等。字段属性是上机考试的必考内容,为了详细的讲解,让广大同学能掌握,该...
  • 现代数据库一般都支持CHAR与VARCHAR字符型字段类型,CHAR是用来保存定长字符,存储空间的大小字段定义的长度,与实际字符长度无网上有很多关于char和varchar的相关比较,但是都历史悠久,这里转载一篇信息比较新...
  • 为表中的字段选择合适的数据类型 1、当一个列可以选择多种数据类型时,应该优先考虑数字类型,其次是日期和二进制类型,最后是字符类型。 2、对于相同级别的数据类型,应该优先选择占用空间小的数据类型。 之所以...
  • 【单选题】关于Access2010的索引,下列叙述中错误的是()【单选题】痰饮淤血()【单选题】关于Access查询中的数据源,下列说法中正确的是【单选题】对Access2010表中某一个字段建立索引时,若其值由重复,可选择()索引...
  • 1. tinyint: 只能存储-128到127大小的数字, 不在乎后面的定义,如tinyint(9). 需1字节存储空间。 当加有UNSIGNED后,数字可以从0增加到255大小。dba@localhost : test 22:36:25> create table ti(id tinyint(9),...
  • mysql常用字段类型简介

    千次阅读 2018-12-11 14:03:16
    ##mysql字段类型 1、tinyint、smallint、mediumint、int、integer、bigint详解 1)tinyint:存储所占一个字节,一个字节等于8bit,根据1bit可以存储0到1两种可能性,因此tinyint类型可以存储2的8次方,也就是256种...
  • 在我还是个mysql新手的时候,看到有的同事给字段值分布很少的字段也加索引。 例如:订单状态字段只有6个值:0 待确认,1 已确认,2 已收货,3 已取消,4 已完成,5 已作废 在我理解mysql B+tree的原理后,很有必要...
  • 检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。 3,尝试建立复合索引来进一步提高系统性能。修改复合索引将消耗更长时间,同时,复合索引也占磁盘空间。 4,对于小型的表,建立索引可能会影响...
  • 工作中处理数据时,发现某个表的数据达近亿条,所以要为表建索引提高查询性能,以下两篇文章总结...6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引; 7、复合索引的建立需要进行仔细分析;尽量...
  • 2.如果指定的盘区管理方式为uniform(即是等同大小管理),这时不能为表指定任何storage子句,盘区的大小将是统一大小。   storage子句3个参数: 1.参数next用于指定为存储表中的数据分配的第二个盘区大小。 ...
  • 许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段中的值是否有正负之分(UNSIGNED)或者用零填补(ZEROFILL)。 INT 在 MySQL 中支持的 5 个主要整数...
  • 【单选题】分子运动包括有电子相对原子核的运动(E电子)、核间相对位移的振动(E振动)和转动(E转动)这三种运动的能量大小顺序为 【判断题】两组共轭剪节理的交线一般与最小主应力轴平行。 【单选题】为choose表...
  • 所以推荐你使用 CHAR 数据类型存储一些固定长度的字符串,比如身份证号、手机号、性别等。 最后, CHAR 和 VARCHAR 的存储长度不同。 CHAR 数据类型可定义的最大长度是 255 个字符,而 VARCHAR 根据所使用的字符集...
  • 从零开始Tableau | 9.计算字段

    千次阅读 2018-09-12 00:53:31
    计算字段让tableau的分析具有很强的灵活性。本节记录要点: 运算符 创建计算字段 主要函数 运算符 运算符是一个符号,可以对对数字、字符串、日期等进行数学或逻辑操作,要使用计算字段和函数,必须先了解...
  • 全文11000字左右,详细地对数据类型和字段属性进行说明,并且通过一个个小案例来证实其作用。
  • 计算机二级习题答案

    2021-07-13 02:07:57
    已知表中有一“性别”字段,文本型,字段大小为1,下列哪个表达式可以作为该字段的有效性规则?( )。 A. =“男”或=“女” B. “男”或“女” C. “男”Or“女” D. “男”/“女” 答案:C 11. 已知表中有一“年龄...
  • #include <iostream> using namespace std; struct student { char name[20]; char sex[10]; int age; int score; }; student stu[1000]; int main() { int n; student tmp; cin >... ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,389
精华内容 12,555
关键字:

性别的字段大小是