精华内容
下载资源
问答
  • 2021-12-28 16:03:40

    因为mysql 5.7已经将alter ignore talbe语法去掉了。这在MySQL 5.6.25中工作正常,但在5.7.9中给出了语法错误,所以不能这样操作了,下面是我的操作思路。

    ALTER IGNORE TABLE `table_name`
    ADD UNIQUE `some_id` (`some_id`);

    1、按照已有表的结构创建一张新表

    create table dfs_img_file_index_new like dfs_img_file_index;

    2、查看新创建的表中是否有索引,把没用索引drop掉。

    show index on dfs_img_file_index_new;

    3、在新表中添加唯一索引

    alter table dfs_img_file_index_new add unique uk_dfs_img_file (element, type, data_time);

    4、将现在录入数据的表更名

    alter table dfs_img_file_index rename dfs_img_file_index_old;

    5、将新创建的表更名

    alter table dfs_img_file_index_new rename dfs_img_file_index;

    6、最后将旧表数据导入到新表

    insert into dfs_img_file_index (file_name, element, type, path, virtual_path, data_time) select file_name, element, type, path, virtual_path, data_time from dfs_img_file_index_oldx_old group by element,type,data_time,path,file_name, virtual_path;

    更多相关内容
  • excel宏实现工作表索引,点击按钮隐藏/显示对应工作表 当单个excel工作簿有很多工作表时,使用起来会有麻烦,虽然excel提供隐藏工作表功能,但点击及查找并不方便。如果能够在一个工作表中实现目录索引功能,点击...

    excel宏实现工作表索引,点击按钮隐藏/显示对应工作表

    当单个excel工作簿有很多工作表时,使用起来会有麻烦,虽然excel提供隐藏工作表功能,但点击及查找并不方便。如果能够在一个工作表中实现目录索引功能,点击按钮即可隐藏/显示对应工作表,会非常方便操作和查看。
    大量工作表
    包含按钮的索引页面

    一、编写宏

    1编写一个点击按钮显示/隐藏工作表的按钮宏

    Sub click()
    For x = 1 To Sheets.Count
    If Sheets(x).name = ActiveSheet.Buttons(Application.Caller).Caption Then
    If Sheets(x).Visible = 0 Then
    Sheets(x).Visible = -1'设置显示
    Else
    Sheets(x).Visible = 0'设置隐藏
    End If
    End If
    Next x
    End Sub
    

    2编写一个隐藏除了索引外全部工作表的点击宏

    Sub 隐藏()
    For x = 1 To Sheets.Count
    If Sheets(x).name <> "炼金配方索引"  Then
       Sheets(x).Visible = 0
    End If
    Next x
    End Sub
    

    3编写一个新建与按钮同名的工作表的宏

    Sub 新建配方z()
    Dim name As String
    Dim bool As Integer
    bool = 0
    name = ActiveSheet.Buttons(Application.Caller).Caption
    If Sheet10.Visible = 0 Then
    Sheet10.Visible = -1
    bool = 1
    End If
    Sheet10.Copy after:=Worksheets(Worksheets.Count)      '永远将新表加入到最后一个工作表之后
    ActiveSheet.name = name           '新的工作表为当前活动的工作,将工作表的名称更改为神山表中对应单元格的名字。
    If bool = 1 Then
    Sheet10.Visible = 0
    End If
    MsgBox "该配方不存在,已为您创建新的样本!"
    End Sub
    

    注意:由于复制一个新的工作表的显示状态与原工作表相同,故需要先显示原来的工作表,再隐藏

    4编写一个新建配方的按钮宏

    Sub 新建配方()
    Dim name As String
    Dim bool As Integer
    bool = 0
    name = InputBox("配方名称:")
    If name <> "" Then '防止点击了取消按钮对话框后出现空按钮的情况
    Dim isExists As Boolean, s As Worksheet
    isExists = False   '检测是否已经同名工作表,防止无法生成工作表的情况
         For Each s In ThisWorkbook.Sheets
            If s.name = name Then
                  isExists = True
            End If
         Next s
    If isExists = False Then
    Set shp = ActiveSheet.Buttons.Add(Rnd * (400 - 30 + 1) + 30, Rnd * (200 - 30 + 1) + 30, 100, 40)  '将新建的按钮创建在区域内的随机位置
    shp.Characters.Text = name
    shp.OnAction = "sheet4.main2"  '给新建的按钮链接一个宏
    If Sheet10.Visible = 0 Then
    Sheet10.Visible = -1
    bool = 1
    End If
    Sheet10.Copy after:=Worksheets(Worksheets.Count)      '永远将新表加入到最后一个工作表之后
    ActiveSheet.name = name           '新的工作表为当前活动的工作,将工作表的名称更改为神山表中对应单元格的名字。
    If bool = 1 Then
    Sheet10.Visible = 0
    MsgBox "创建样本及按钮完成!"
    End If
    Else: MsgBox "已存在该配方!"
    End If
    End If
    End Sub
    

    5编写一个主宏,用于赋给索引按钮

    Sub main2()
     Dim isExists As Boolean, s As Worksheet
    isExists = False '假如同名工作表不存在,则引用“新建配方z”
         For Each s In ThisWorkbook.Sheets
            If s.name = ActiveSheet.Buttons(Application.Caller).Caption Then
                  isExists = True
            End If
         Next s
    If isExists = False Then
       Call 新建配方z
    Else '假如同名工作表存在,则引用“click”
    Call click
    End If
    End Sub
    

    6编写第二个主宏,用于赋给新建配方这个按钮

     Sub main()
       Call 新建配方
    End Sub
    

    二、新建按钮连接到宏

    1.手动创建与工作表同名的按钮,都链接到宏:sheet4.main2
    2.手动创建一个名为“隐藏全部”的按钮,链接到宏:seet4.隐藏
    3.手动创建一个名为“创建新工作表”的按钮,链接到宏:sheet4.main

    三、使用索引功能

    1.对于已有的工作表:点击与工作表同名的按钮可实现隐藏/显示
    2.想要新建一个工作表:点击按钮“创建新工作表”弹出输入框,输入名称后会新建一个工作以及一个同名按钮。

    展开全文
  • 对于分区,可以建立不分区索引。也就是说分区,但是索引不分区。以下着重介绍分区的分区...1. 局部分区索引(locally partition index)局部分区索引索引完成相应的分区,即索引会使用与表相同的机制进行...

    对于分区表,可以建立不分区索引。也就是说表分区,但是索引不分区。以下着重介绍分区表的分区索引。

    索引与表一样,也可以分区。索引分为两类:locally partition index(局部分区索引)、globally partition index(全局分区索引)。

    1. 局部分区索引(locally partition index)

    局部分区索引随表对索引完成相应的分区,即索引会使用与表相同的机制进行分区,每个表分区都有一个索引分区,并且只索引该表分区。

    1.1 局部索引分类

    ▶ 局部前缀索引(local prefixed index):以分区键作为索引定义的第一列

    ▶ 局部非前缀索引(local nonprefixed index):分区键没有作为索引定义的第一列

    注意:判断局部索引是前缀还是非前缀的只需要看分区键是否作为索引定义的第一列

    示例语句

    --范围分区

    --创建表

    create table student_range_part(

    stu_id varchar2(4),

    stu_name varchar2(100), --姓名

    sex varchar2(1),  --性别 1 男  2 女  0 未知

    credit integer default 0

    )

    partition by range (credit)

    (

    partition student_part1 values less than (60) tablespace kdhist_data,

    partition student_part2 values less than (70) tablespace kdhist_data,

    partition student_part3 values less than (80) tablespace kdhist_data,

    partition student_part4 values less than (maxvalue) tablespace kdhist_data

    );

    --创建局部前缀索引;分区键(credit)作为索引定义的第一列

    create index local_prefixed_index on student_range_part (credit, stu_id) local;

    --创建局部非前缀索引;分区键未作为索引定义的第一列

    create index local_nonprefixed_index on student_range_part (stu_id, credit) local;

    1.2 局部索引示例

    --①

    select * from student_range_part where credit = &credit and stu_id = &stu_id;

    --②

    select * from student_range_part where stu_id = &stu_id;

    对于以上两个查询来说,如果查询第一步是走索引的话,则:

    局部前缀索引 local_prefixed_index 只对 ① 有用;

    局部非前缀索引 local_nonprefixed_index 则对 ① 和 ② 均有用;

    如果你有多个类似 ① 和 ② 的查询的话,则可以考虑建立局部非前缀索引;如果平常多使用查询 ① 的话,则可以考虑建立局部前缀索引;

    小结:

    分区表一般使用局部索引。重点在于如何选择分区表和局部索引类型。

    2. 全局分区索引(globally partition index)

    索引按范围(Range)或散列(Hash,Oracle 10g中引入)进行分区,一个分区索引(全局)可能指向任何(或全部的)表分区。

    对于全局分区索引来说,索引的实际分区数可能不同于表的分区数量;

    全局索引的分区机制有别于底层表,例如表可以按 credit 列划分为10个分区,表上的一个全局索引可以按stu_id 列划分为5个分区。

    与局部索引不同,全局索引只有一类,即全局前缀索引(prefixed global index),索引分区键必须作为索引定义的第一列,否则执行会报错。

    --范围分区

    --创建表

    create table student_range_part(

    stu_id varchar2(4),

    stu_name varchar2(100), --姓名

    sex varchar2(1),  --性别 1 男  2 女  0 未知

    credit integer default 0

    )

    partition by range (credit)

    (

    partition student_part1 values less than (60) tablespace kdhist_data,

    partition student_part2 values less than (70) tablespace kdhist_data,

    partition student_part3 values less than (80) tablespace kdhist_data,

    partition student_part4 values less than (maxvalue) tablespace kdhist_data

    );

    --创建按age进行范围分区的全局分区索引

    create index global_index on student_range_part(credit) global

    partition by range (credit)

    (

    partition index_part1 values less than (60),

    partition index_part2 values less than (80),

    partition index_partmax values less than (maxvalue)

    );

    注意:

    全局索引要求最高分区(即最后一个分区)必须有一个值为 maxvalue 的最大上限值,这样可以确保底层表的所有行都能放在这个索引中;

    一般情况下,大多数分区操作(如删除一个旧分区)都会使全局索引无效,除非重建全局索引,否则无法使用

    全局索引示例

    全局索引一般用于数据仓库,许多数据仓库系统都存在大量的数据出入,如典型的数据“滑入滑出”(即删除表中最旧的分区,并为新加载的数据增加一个新分区)。

    ① 去除老数据:最旧的分区要么被删除,要么创建一个新表,将最旧的分区数据存入,从而对旧数据进行归档;

    ② 加载新数据并建立索引:将新数据加载到一个“工作”表中,建立索引并进行验证;

    ③ 关联新数据:一旦加载并处理了新数据,数据所在的表会与分区表中的一个空分区交换,将表中的这些新加载的数据变成分区表中的一个分区(分区表会变得更大)

    对于全局索引来说,这样增删分区的过程,意味着该全局索引的失效,需重建全局索引;

    在 Oracle 9i 之后,可以在分区操作期间使用 UPDATE GLOBAL INEXES 子句来维护全局索引,这意味着当在分区上执行删除、分解或其他操作时,Oracle会对原先建立的全局索引执行必要的修改,以保证它是最新的。

    --删除student_range_part表中的index_part1分区,同时同步维护全局索引

    alter table student_range_part drop partition index_part1 update global indexes;

    使用 UPDATE GLOBAL INEXES子句后,在删除一个分区时,必须删除可能指向该分区的所有全局索引条目;

    执行表与分区的交换时,必须删除指向原数据的所有全局索引条目,再插入指向刚加载的数据的新条目;

    如此一来 ALTER 命令执行的工作量会大幅增加;

    小结:

    分区操作执行完成后重建全局索引方式占用的数据库资源更少,因此完成的相对“更快”,但是会带来显著的“停机时间”(重建索引时会有一个可观的不可用窗口);

    在分区操作执行的同时执行 UPDATE GLOBAL INEXES 子句方式会占用更多的资源,且可能需要花费更长的时间才能完成操作,但好处是不会带来任何的停机时间。

    即使是数据仓库,除非特殊需求,否则这个创建局部索引即可。

    分区索引:https://www.cnblogs.com/Dreamer-1/p/6132776.html

    展开全文
  • 查看MySQL数据表索引方法

    千次阅读 2021-01-19 09:33:13
    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以...那么如果我们工作中想查看MySQL数据表使用的哪些索引该怎么查看呢?查看mysql数据表使用了哪些索引的方法。mysql> show index from tblname;或者:m...

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。那么如果我们工作中想查看MySQL数据表使用的哪些索引该怎么查看呢?

    查看mysql数据表使用了哪些索引的方法。mysql> show index from tblname;

    或者:mysql> show keys from tblname;

    下面是查询结果的相关说明:

    · Table 表的名称。

    · Non_unique 如果索引不能包括重复词,则为0。如果可以,则为1。

    · Key_name 索引的名称。

    · Seq_in_index 索引中的列序列号,从1开始。

    · Column_name 列名称。

    · Collation 列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)。

    · Cardinality 索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机 会就越大。

    · Sub_part 如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。

    · Packed 指示关键字如何被压缩。如果没有被压缩,则为NULL。

    · Null 如果列含有NULL,则含有YES。如果没有,则该列含有NO。

    · Index_type 用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。

    补充:MySQL索引有很多的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。以上查看查看mysql数据表使用了哪些索引的方法希望对你有帮助。

    相关推荐:

    展开全文
  • # 有这样一个 Pmysql> create table P (id int primary key, name varchar(10) not null, sex varchar(1), age int, index tl(name,sex,age)) engine=IInnoDB;mysql> insert into P values(1,'张三','F',26)...
  • SAP中的数据库表索引

    2020-08-25 15:21:03
    数据库中的索引可以加快查询的速度。索引是数据库表字段的有序副本。附加的字段包含指向真实数据库行的指针。排序可以使访问行的速度变快,例如,可以使用二分搜索。数据库至少有一个主索引,由它的key字段...
  • SQL Server索引优化——重复索引

    千次阅读 2019-02-20 18:06:00
    SQL Server索引优化——重复索引 在写完《SQLServer索引优化——无用索引索引缺失》系列后,就想着写点关于发现重复索引的内容,刚好在Kimberly的博文中发现了这篇,就偷懒了,直接将其翻译过来。 一直以来,对...
  • 展开全部在满足语句需求的情况下,尽量少的访62616964757a686964616fe59b9ee7ad9431333433626432问资源是数据库设计的重要原则,这和执行的 SQL 有直接的关系,索引问题又是 SQL 问题中出现频率最高的,常见的索引...
  • # 有这样一个 Pmysql> create table P (id int primary key, name varchar(10) not null, sex varchar(1), age int, index tl(name,sex,age)) engine=IInnoDB;mysql> insert into P values(1,'张三','F',26)...
  •  作为一个Oracle数据库开发者或者DBA,在实际工作中经常会遇到这样的问题:试图对库中的某一列或几列创建唯一索引时,系统提示ORA-01452:不能创建唯一索引,发现重复记录。 下面我们以code_ref为例来讨论这个...
  • 用phpmyadmin查看你的数据库,设置为主键、选择唯一索引,是否允许重复数据类型无关。关键字UNIQUE把它定义为一个唯一索引.唯一性索引 和“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须...
  • 索引SQL Server临时

    千次阅读 2020-07-26 00:09:53
    执行后使用ApexSQL Plan应用程序检查生成的执行计划,我们将看到,由于我们没有大型或复杂查询的联接,因此从这三个中检索数据会消耗相同的资源(1%),并且会有所不同在用于检索数据的运算符中; 对于没有...
  • Oracle分区及分区索引

    千次阅读 2017-08-10 17:06:52
    Oracle分区索引 索引类似,也可以分区; ...分区索引分为两类: ...Locally partitioned index(局部分区索引)Globally partitioned index(全局分区索引) ...局部分区索引索引完成相应的分区
  • 数据库结构及索引设计

    千次阅读 2021-12-13 20:31:52
    数据库设计 良好的结构设计是高性能的基石,应该根据系统将要执行的业务查询来设计,这往往需要权衡各种因素。糟糕的结构设计,会浪费大量的开发时间,严重延误项目开发周期,让人痛苦万分,而且直接影响到...
  • mysql索引详解

    万次阅读 多人点赞 2021-07-07 21:40:09
    分别为:定义文件、数据文件、索引文件。第一个文件的名字以的名字开始,扩展名指出文件类型。.frm文件存储定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。 InnoDB:所有的都...
  • 数据库索引详解

    千次阅读 2021-11-17 19:16:13
    数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库中数据索引的实现通常使用B树和变种的B+树(MySQL常用的索引就是B+树)。除了数据之外,数据库系统还维护为满足特定查找算法的...
  • mysql索引数据结构

    千次阅读 2022-03-27 14:43:57
    对字段Col2添加了索引,就相当于在硬盘上为col 2维护了一个索引数据结构,即这个二叉搜索树。二叉搜索树的每个结点存储的是(K,V)结构,key是Col 2,value是该key所在行的文件指针(地址)。比如:该二
  • # 有这样一个 Pmysql> create table P (id int primary key, name varchar(10) not null, sex varchar(1), age int, index tl(name,sex,age)) engine=IInnoDB;mysql> insert into P values(1,'张三','F',26)...
  • SQL索引工作原理

    千次阅读 2019-04-26 22:17:06
    SQL 当一个新被创建之时,系统将在磁盘中分配一段以8K为单位的连续空间,当字段的值从内存写入磁盘时,就在这一既定空间随机保存,当一个8K用完的时候, SQLS指针会自动分配一个8K的空间。这里,每个8K空间被称为...
  • 在有重复数据上添加唯一索引的方法
  • 索引的基数相对于数据表行数较高(也就是说,列中包含很多不同的值,重复的值很少)的时候,它的工作效果最好。如果某数据列含有很多不同的年龄,索引会很快地分辨数据行。如果某个数据列用于记录性别(只有”M”和...
  • 笔者曾在很长一段时间内深陷其中,无法分清“覆盖索引,辅助索引,唯一索引,Hash索引,B-Tree索引……”到底是些什么东西,导致在面试过程中进入比较尴尬的局面。很多人可能会抱怨”面试造火箭,工作拧螺丝,很多...
  • 一:线性索引索引表】 就是将索引项集合组织为线性结构,也称为索引表 二:稠密索引 三:分块索引 四:倒排索引 ...
  • 索引是把一个数据文件的关键码和它对应的数据记录相关联的过程。每一个关联构成一个索引项,每个索引项至少应包含关键字和其对应的记录在存储器中的位置等信息。所有索引项的集合构成该文件的索引表。保存在磁盘上的...
  • 索引原理 1、每个数据页可以组成一个双向列表 2、每个数据页中的记录又可以组成一个单向列表 每个数据页都会为存储在它里边儿的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录使用...
  • 索引建在与表不同空间

    千次阅读 2013-01-28 15:25:10
    Oracle 数据库的逻辑结构是由一些数据库对象组成,如数据库空间、索引、段、视图、存储过程、触发器等。数据库的逻辑存储结构(空间等)决定了数据库的物理空间是如何被使用的,数据库对象如索引等分布在...
  • MySQL索引数据结构以及算法原理

    万次阅读 多人点赞 2018-04-19 22:13:28
    写在前面的话 在编程领域有一句人尽皆知的法则“程序 = 数据结构 + 算法”,我个人是不太赞同这句话(因为我觉得程序不仅仅是数据结构加算法),但是在日常的学习和工作中我确认深深感受到数据结构和算法的重要性,...
  • 索引组织(index organized table, IOT)就是存储在一个索引...索引组织数据按主键排序手段被存储在B-树索引中,除了存储主键列值外还存储非键列的值。普通索引只存储索引列,而索引组织则存储的所有列的值。
  • 博客主页:看看是李XX还是李歘歘 每天不定期分享一些包括但不限于计算机基础、算法、后端开发相关的知识点,以及...聚集索引(聚簇索引):叶子节点中存的是整行数据,找到索引也就找到了数据索引数据中行...
  • 索引(聚簇索引和非聚簇索引、回);视图;存储过程;触发器;分区

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 306,506
精华内容 122,602
关键字:

不同工作表索引相同数据