MySql SqlServer Sqlite中关于索引的创建
最近要更新Cocon90.Db库,令其ORM创建表时实现索引的添加。因此总结下列常用Sql,供大家学习与参考。
一、SqlServer中创建索引可以这样:
if not exists (select * from sysobjects where id = object_id('{0}') and OBJECTPROPERTY(id, 'IsUserTable') = 1) Create Table Test (
RowId VARCHAR(36) NOT NULL,
Name VARCHAR(255) NOT NULL ,
Type int NULL,
PRIMARY KEY (RowId,Name),
INDEX idxType(Type),
INDEX idxName(Name)
);
二、MySql中需要这样:
CREATE TABLE IF NOT EXISTS Test (
RowId VARCHAR(36) NOT NULL,
Name VARCHAR(255) NOT NULL ,
Type int NULL,
PRIMARY KEY (RowId,Name),
INDEX idxType(Type),
INDEX idxName(Name)
);
三、Sqlite中需要这样:
CREATE TABLE IF NOT EXISTS Test (
RowId VARCHAR(36) NOT NULL,
Name VARCHAR(255) NOT NULL ,
Type int NULL,
PRIMARY KEY (RowId,Name)
);
create index IF NOT EXISTS idx3 on Test(Type);
create index IF NOT EXISTS idx2 on Test(Name);
四、SqlServer中有则删除索引,无则创建索引的常用语句有:
Create Index idxType on Test (Type,Name)
with (drop_existing = on); 或者 IF Not EXISTS(SELECT * FROM sys.indexes WHERE object_id = object_id('Test') AND NAME ='idxType1')
CREATE INDEX [idxType1] ON Test(Type,Name);
五、Sqlite中无则创建索引的常用语句有:
create index IF NOT EXISTS idx3 on Test(Type);
create index IF NOT EXISTS idx2 on Test(Name);
六、MySql中对于无则创建索引的常用语句有:
DROP PROCEDURE IF EXISTS schema_change;
CREATE PROCEDURE schema_change() BEGIN
IF NOT EXISTS (SELECT * FROM information_schema.statistics WHERE table_schema=database() AND table_name = 'Test' AND index_name = 'idxType')
THEN ALTER TABLE `Test` ADD INDEX `idxType` ( `Type` ); END IF;
END; CALL schema_change(); DROP PROCEDURE IF EXISTS schema_change;
MySql SqlServer Sqlite中关于索引的创建的更多相关文章
- 牛逼!MySQL 8.0 中的索引可以隐藏了…
MySQL 8.0 虽然发布很久了,但可能大家都停留在 5.7.x,甚至更老,其实 MySQL 8.0 新增了许多重磅新特性,比如栈长今天要介绍的 "隐藏索引" 或者 " ...
- Mysql中查询索引和创建索引
查询索引 show index from table_name 1.添加PRIMARY KEY(主键索引) ALTER TABLE `table_name` ADD PRIMARY KEY ( ` ...
- 删除重复记录(Mysql,SqlServer,Sqlite)
Mysql中有重复的数据: ) )> order by count() desc 删除一下吧: delete a from t_resource_apptype_releation as a, ...
- 在sqlite中使用索引
出处: 网络 1)Sqlite不支持聚集索引,android默认需要一个_id字段,这保证了你插入的数据会按“_id”的整数顺序插入,这个integer类型的主键就会扮演和聚集索引一样的角色.所以不要 ...
- oracle mysql sqlserver数据库中的分页
oracle: select * from (select rownum r,t1.* from tablename t1 where rownum <M+N ) t2 where t2.r&g ...
- 在SQLite中使用索引优化查询速度
在进行多个表联合查询的时候,使用索引可以显著的提高速度,刚才用SQLite做了一下测试. 建立三个表: create table t1 (id integer primary key,num inte ...
- 谈数据库索引和Sqlite中索引的使用
要使用索引对数据库的数据操作进行优化,那必须明确几个问题:1.什么是索引2.索引的原理3.索引的优缺点4.什么时候需要使用索引,如何使用围绕这几个问题,来探究索引在数据库操作中所起到的作用. 1.数据 ...
- Mysql中索引的 创建,查看,删除,修改
创建索引 MySQL创建索引的语法如下: ? 1 2 3 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON ...
- 兼容SQLSERVER、Oracle、MYSQL、SQLITE的超级DBHelper
本示例代码的关键是利用.net库自带的DbProviderFactory来生产数据库操作对象. 从下图中,可以看到其的多个核心方法,这些方法将在我们的超级DBHelper中使用. 仔细研究,你会发现每 ...
随机推荐
- android studio一直卡在Gradle:Executing tasks
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=554227 新建了个hello world项目,运行就卡在Gradle:Exec ...
- Android实现对HOME键的捕获和屏蔽
1.1. 在AndroidManifest.xml中加上权限,禁止HOME键. <uses-permission android:name="android.permission.DI ...
- RabbitMQ:基本命令
rabbitmq的安装.启动和停止 rabbitmq-service.bat install rabbitmq-service.bat start rabbitmq-service.bat stop ...
- python测试开发django-22.admin首页和title修改
前言 django的admin首页默认显示的"Django 管理",title显示的是"Django 站点管理员",这里的文案内容可以修改成自己项目的后台页面内 ...
- centOS7下实践查询版本/CPU/内存/硬盘容量等硬件信息
1.系统 1.1版本 uname -a 能确认是64位还是32位,其它的信息不多 [root@localhost ~]# uname -a Linux localhost.localdomain 3. ...
- go1.8之安装配置具体步骤
操作系统: CentOS 6.9_x64 go语言版本: 1.8.3 安装go 这里直接安装二进制,其它方式请自行搜索. 1.下载并安装go 命令如下: ? 1 2 3 wget https://st ...
- Java并发编程的艺术(十二)——线程安全
1. 什么是『线程安全』? 如果一个对象构造完成后,调用者无需额外的操作,就可以在多线程环境下随意地使用,并且不发生错误,那么这个对象就是线程安全的. 2. 线程安全的几种程度 线程安全性的前提:对『 ...
- JDK(Java SE Development Kit)的安装与环境变量的配置
本文参考于:http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html 感谢作者的贡献~ 首先,进入网址下载JDK:http://ww ...
- 《数据挖掘:R语言实战》
<数据挖掘:R语言实战> 基本信息 作者: 黄文 王正林 丛书名: 大数据时代的R语言 出版社:电子工业出版社 ISBN:9787121231223 上架时间:2014-6-6 出版 ...
- JUnit - 测试框架
什么是 Junit 测试框架? JUnit 是一个回归测试框架,被开发者用于实施对应用程序的单元测试,加快程序编制速度,同时提高编码的质量.JUnit 测试框架能够轻松完成以下任意两种结合: Ecli ...