首页 > 数据库 >创建联合唯一索引的sql

创建联合唯一索引的sql

时间:2023-08-29 16:48:42浏览次数:41  
标签:city INDEX 创建 detail rule 索引 sql id

删除索引:
DROP INDEX idx_ruleId_cityId ON detail_price;
DROP INDEX 索引名称 ON 表名;

创建联合唯一索引:
ALTER TABLE detail_price ADD unique INDEX idx_ruleId_cityId(rule_id,city_id);
ALTER TABLE 表名 ADD unique INDEX 索引名称(字段1,字段2);

(如果表中已经有重复的记录,这时候添加唯一索引,执行上面的操作时,数据库会返回添加失败信息,因为已经有重复的记录了,建立索引失败。)
可以通过以下sql查询重复记录,删除多余的记录,只保留一条:
select rule_id,city_id,count(*) as count from detail_price group by rule_id,city_id having count>1;

删除表中多余的重复记录,只保留rowid最小的记录:
delete from detail_price a where (a.rule_id,a.city_id) in (select rule_id,city_id from detail_price group by rule_id,city_id having count>1)
and rowid not in (select min(rowid)from detail_price group by rule_id,city_id having count>1 )
————————————————
MySQL中通过SQL方式,获取索引信息的3种方法。
方法一:查看特定表的索引,请使用SHOW INDEX:

SHOW INDEX FROM t_user;  # t_user 表名

方法二:查询某个数据库(table_schema)的全部表索引,可以从INFORMATION_SCHEMA架构中的STATISTICS表中获取索引信息

    SELECT DISTINCT
        TABLE_NAME,
        INDEX_NAME
    FROM INFORMATION_SCHEMA.STATISTICS
    WHERE TABLE_SCHEMA = 'dbtest';  #  dbtest 数据库名称

方法三:根据innodb_index_stats获取索引信息

SELECT * FROM mysql.`innodb_index_stats` a WHERE a.`database_name` = '数据库名' and a.table_name like '%表名%';

标签:city,INDEX,创建,detail,rule,索引,sql,id
From: https://www.cnblogs.com/qxh-beijing2016/p/17665225.html

相关文章

  • 【5.0】Docker部署MySQL
    【一】引入根据您提供的内容,我们可以看出在使用Docker运行MySQL容器时,如果没有进行目录映射,配置文件和表数据都将保存在容器内部。当删除容器后,这些数据也会丢失。为了确保数据的持久化并避免数据丢失的情况,您可以进行目录映射来将数据保存在宿主机上。【二】操作步骤【1】......
  • 【23种设计模式】创建者模式(四)
    前言在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”......
  • 数据库的创建与删除
    1.数据库字段属性(重点)Unsingned:无符号的整数不能声明为负数zerofill0填充的不足的位数,使用0来填充 自增:通常理解为自增,自动在上一条记录的基础上+1(默认)。通常用来设计唯一的主键-index,必须是整数类型。可以自定义设计主键自增的起始值和步长。......
  • SqlServer中查询数据库所有表及其数据总条数和占用空间
    1、查询某数据库中的所有数据表SELECTname数据表FROMsysobjectsWHERExtype='u'ORDERBYname2、查询某数据库中的所有数据表及其数据总条数SELECTa.name数据表,b.rows数据总条数FROMsysobjectsASaINNERJOINsysindexesASbONa.id=......
  • Mysql主从备份时遇到的坑
    SHOWVARIABLESLIKE 'server_id' 配置完不同步时,一定要看一下这个值是否一致, 原因是我在my.ini里手工加了一条server-id=2,在手工加的下面,还有一条系统自带的server-id=1,把我的那条冲掉了,所以一直失败!!!......
  • MySQL默认情况下的排序方式
    1、问题:今天在做开发时碰到了一个问题,使用了最简单的sql语句查询,条件中也只有一个条件,语句类似如下:SELECT*FROM`people`WHEREschool_id='1234';查询出的结果为3条,本以为应该按照数据库的插入顺序查出来,即按照主键ID的升序排列,但是得出的结果却不是,确实按照了其中一个字......
  • 【随手记】远程连接orcale数据库(PLSQL、Navicat)
    如果不是为了图方便,最好在本地安装数据库不过安装Orcale确实有点麻烦,而且数据库是共同使用的,远程连接弄好了可以省去很多时间。具体操作这里不说了,网上都有,直接搜索PLSQL或者Navicat远程连接数据库就行。踩坑这里说一下我遇到的问题吧,我先用navicat远程连接的,下载好客户......
  • BUUCTF [极客大挑战 2019]HardSQL
    判断过滤哪些关键词和字符报错注入报错注入在没法用union联合查询时用,但前提还是不能过滤一些关键的函数。报错注入就是利用了数据库的某些机制,人为地制造错误条件,使得查询结果能够出现在错误信息中。这里主要记录一下xpath语法错误和concat+rand()+group_by()导致主键重复xpa......
  • mysql主从搭建(最全最详细)
    1. 下载mysql解压包Mysql newer version:  8.0.33cat/etc/redhat-release  查看centOS版本https://downloads.mysql.com/archives/community/  社区版下载地址根据操作系统版本选择相应版本tar包,目前最新版本是8.0.33 2. 解压配置mysql查看mysql用户组是否......
  • MySQL主从数据恢复
    主要步骤:导出主库数据,恢复到从库,重新开启主从同步。 1.先停止从库从库上执行stopslave; 2 在从库mysqlbin目录下导出主库数据./mysqldump-h192.168.174.201--port=3359-uroot-p'pwd'--default-character-set=UTF8MB4--single-transaction--events--triggers......