CREATE INDEX IF NOT EXIST这种创建索引的方式在MySQL中是不支持的,只支持CREATE INDEX,连续两次运行CREATE INDEX ,第二次会报错。

那么,我遇到这么一个问题:希望在一段升级脚本中对一个表建立索引。这段脚本可能会被反复运行,下面的写法是安全的:

if(!pdo_fieldexists('goods', 'cover_content')) {pdo_query("ALTER TABLE goods ADD `cover_content` text");
}CREATE TABLE if not exists  `express` (`id` int(11) NOT NULL AUTO_INCREMENT,
);

但是,索引,不支持这种先判断后创建的模式,即不支持CREATE INDEX IF NOT EXIST,也没有给出明确接口判断一个索引是否存在。MySQL文档给出的解决方案太复杂了:http://dev.mysql.com/doc/refman/5.0/en/create-index.html

我想到了一个土鳖的办法:

if(!pdo_fieldexists('dummy_table', 'new_column')) {pdo_query("ALTER TABLE dummy_table ADD `new_column` int");create index my_index_on_goods xxxxx;
}

完美搞定!代价是搞了个不必要的列,姑且称为Guard Column吧!如果这种需求很频繁,可以专门搞一个无用的表做这个事情。

为什么MySQL不支持CREATE INDEX IF NOT EXIST呢?周一问问OceanBase是否支持这个东东。有点奇怪。

CREATE INDEX IF NOT EXIST相关推荐

  1. 第六章 SQL命令 CREATE INDEX(一)

    文章目录 第六章 SQL命令 CREATE INDEX(一) 大纲 参数 描述 权限与锁 仅支持兼容性选项 索引名称 现有索引 表明 字段名称 嵌入对象中的字段(`%SerialObject`) 索引 ...

  2. sql 高级 (五)(create index(创建索引) drop)

    2019独角兽企业重金招聘Python工程师标准>>> SQL create index 语句 create  index语句用于在表中创建索引. 在不读取整个表的情况下,索引使数据 ...

  3. MySQL创建索引(CREATE INDEX)

    索引的建立对于 MySQL 数据库的高效运行是很重要的,索引可以大大提升 MySQL 的检索速度. 基本语法 MySQL 提供了三种创建索引的方法: 1) 使用 CREATE INDEX 语句 可以使 ...

  4. 9、创建索引(CREATE INDEX)

    创建索引是指在某个表的一列或多列上建立一个索引,可以提高对表的访问速度.创建索引对 MySQL 数据库的高效运行来说是很重要的. 基本语法 MySQL 提供了三种创建索引的方法: 1) 使用 CREA ...

  5. MySQL使用CREATE INDEX创建索引

    如果,在一个已经存在的表上创建索引,可以使用CREATE INDEX语句,语法格式 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 ON 表名(字段名[(长度)] ...

  6. Kibana 创建索引 POST 403 (forbidden) on create index

    一.问题描述: Kibana创建索引:kibana > management > index patterns > create index pattern 索引名称: mercha ...

  7. PostgreSQL的 create index concurrently

    对于PostgreSQL的 "create index concurrently". 我个人认为其中存在一个bug. 我的验证过程如下: 我有两个表,tab01和 tab02,这两 ...

  8. 索引 CREATE INDEX

    CREATE INDEX 语句用于在表中创建索引. 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据. 索引 您可以在表中创建索引,以便更加快速高效地查询数据. 用户无法看到索引,它们只 ...

  9. oracle 创建索引 CREATE INDEX

    CREATE INDEX -- 定义一个新索引 Synopsis CREATE [ UNIQUE ] INDEX name ON table [ USING method ]( { column | ...

最新文章

  1. esp32 蓝牙启动流程_TWS真无线蓝牙耳机多功能测试设备
  2. 力扣: 231. 2的幂 【位运算】
  3. java 对象创建过程_5种创建Java对象的方式
  4. R语言安装;Rstudio安装
  5. 信息学奥赛一本通(1031:反向输出一个三位数)
  6. linux中ftp的工作原理,Linux系统学习 十二、VSFTP服务—简介与原理
  7. 【英语学习】【医学】Unit 10 Tumor
  8. [导入]每个开发人员现在应该下载的十种必备工具
  9. Android WatchDog正解
  10. 求职 IT 少年李文星之死:请务必学会保护自己!
  11. 基于大数据的数据挖掘算法-大数据
  12. 【小白总结】NLP算法:文本研究领域与NLP文本标注工具(一)
  13. 如何用一个例子彻底解释白盒测试中语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖?
  14. 方差分析 交互效应和无交互效应
  15. 大话西游服务器刚维护完几率,大话西游2玩家预约凌烟阁服务器瞬间成功,这算不算被几率...
  16. 午间一乐:no zuo no die,唱起来
  17. 2022年12月最新快速批量删除微博内容_新版本如何批量删除微博以前发过的博文内容
  18. python协程怎么做数据同步_Python 中的进程、线程、协程、同步、异步、回调
  19. 苹果xr如何截屏_iphone敲两下截屏如何操作 苹果手机触控截屏方法【教程步骤】...
  20. debounce与throttle区别

热门文章

  1. win7 32位 成功安装 quartus11.0+dsp builder11.0+matlab2010a联合开发
  2. VPI 8.6 安装时遇到的问题及解决
  3. TIMIT数据集介绍
  4. 欧姆龙、松下、基恩士PLC进行连续数据采集、时序和故障追踪的方法
  5. 《浪矢解忧杂货店》——品味最真实的感动
  6. pve虚拟机能装linux,PVE虚拟机增加硬盘
  7. 电子价签助力新零售超市场景科技化
  8. 【2021软件创新实验室暑假集训】SpringMVC框架(设计原理、简单使用、源码探究)
  9. 8.2 优化 SQL 语句
  10. GoAccess - 可视化 Web 日志分析工具