, -> name varchar(20) not null, -> age tinyint(2) not null default ‘0‘, -> key index_name(name) -> ); Query OK, 0 rows affected (0.02 sec) 这样我们就为这个表创建了一个主键索引,primary key 普通索引 key index_name(这个代表索引名) 查看表结构就可以看到KEY字段建立索引了 MUL代表普通索引 建立表之后再通过alter 命令建立索引或者修改索引,但是不建议这样做。比如我们刚才创建的表的主键...
4、GROUP BY语句优化 提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉 低效: SELECT JOB , AVG(SAL) FROM EMP GROUP by JOB HAVING JOB = ‘PRESIDENT‘ OR JOB = ‘MANAGER‘ 高效: SELECT JOB , AVG(SAL) FROM EMP WHERE JOB = ‘PRESIDENT‘ OR JOB = ‘MANAGER‘ GROUP by JOB 5、用 exists 代替 in 很多时候用 exists 代替 in 是一个好的选择:select num from a where num in(select num from b)用下...
在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。 MyISAM索引实现MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:图8这里设表一共有三列,假设我们以Col1为主键,则图8是一个MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。在MyISAM中,主索...
首先在solrconfig.xml(我的是保存在/usr/local/tomcat/solrhome/mycore/conf/下)的<requestHandler name="/select" class="solr.SearchHandler">之上添加 (我的本地的solrconfig.xml中有这个/dtatimport 只需把class修改为下面的就可以了) <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </re...
作者 | 谢庆玲 文章《MySQL查询分析》讲述了使用MySQL慢查询和explain命令来定位mysql性能瓶颈的方法,定位出性能瓶颈的sql语句后,则需要对低效的sql语句进行优化。本文主要讨论MySQL索引原理及常用的sql查询优化。一个简单的对比测试前面的案例中,c2c_zwdb.t_file_count表只有一个自增id,FFileName字段未加索引的sql执行情况如下:在上图中,type=all,key=null,rows=33777。该sql未使用索引,是一个效率非常低的全表扫描。如...
http://blog.sina.com.cn/s/blog_5037eacb0102vm5c.html 官方MySQL中查看索引是否被使用到: 在percona版本或marida中可以通过 information_schea.index_statistics查看得到, 在官方版本中如何查看呢? select object_type,object_schema,object_name,index_name,count_star,count_read,COUNT_FETCH from performance_schema.table_io_waits_summary_by_index_usage; 应该可以通过上面的sql得到。 如果read,fetch的次数都为...
(在MySQL中也叫键(key))是存储引擎用于快速找到记录的一种数据结构。 索引类型有:Normal,Unique,FullText。 索引方法有:BTREE、HASH。 我有一个user_info的测试表里面随机生成了300个姓名一、索引基础 创建一个普通索引:mysql> create index myindex on user_info(username); Query OK, 0 rows affected Records: 0 Duplicates: 0 Warnings: 0也可以指定索引的长度:create index myindex on user_info (username(3))...
系统使用者反应有一个功能越来越慢,于是工程师找到了上面的SQL。并且兴致冲冲的找到了我,“这个SQL需要优化,给我把每个字段都加上索引”我很惊讶,问道“为什么需要每个字段都加上索引?”“把查询的字段都加上索引会更快”工程师信心满满“这种情况完全可以建一个联合索引,因为是最左前缀匹配,所以operate_time需要放到最后,而且还需要把其他相关的查询都拿来,需要做一个综合评估。”“联合索引?最左前缀匹配?综合评估?...
做题记录有50w条,统计要20多分钟经过优化sql和建立索引,响应只需0.1秒SHOW INDEX FROM `exam_question_record`;ALTER TABLE `exam_question_record` ADD INDEX index_qid_status (`qst_id`,`status`)查看索引 SHOW INDEX FROM `exam_question_record`;1.添加PRIMARY KEY(主键索引) mysql> ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引) mysql> ALTER TABLE `table_name` ADD UNIQUE ( `column...
下面分别创建三张表,并分别插入1W条简单的数据用来测试,详情如下: [1] test_a 有主键但无索引 CREATE TABLE `test_a` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `content` text NOT NULL, `number` int(10) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; [2] test_b 有主键和单列索引 CREATE TABLE `test_b` ( `id` int...
创建索引: 1.添加PRIMARY KEY(主键索引) 【主键:一种唯一性索引,必须指定为primary key 】 mysql> ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引) mysql> ALTER TABLE `table_name` ADD UNIQUE ( `column` ) 3.添加INDEX(普通索引) mysql> ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 4.添加FULLTEXT(全文索引) 【从...
1 2 3 4 5 6 7CREATE TABLE `uniontest` ( `id` int(11) NOT NULL AUTO_INCREMENT, `menuname` varchar(50) DEFAULT NULL, `url` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `u_index` (`menuname`,`url`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8先建立数据库,把menuname和url设置为联合索引 需要注意的几点: 1、在插入数据的时候Mysql 对menuname和url两列同时做了检查唯一性 如: ...
索引相当于目录,可快速查找到需要的数据. 1、普通索引:普通索引是MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值. 2、唯一索引:唯一索引不允许两行具有相同的索引值. 3、主键索引:在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型.主键索引要求主键中的每个值是非空、唯一. 4、复合索引:将多个列组合作为索引,这种索引称为复合索引. 5、全文索引:全文索引的作用是吧定义索引的列...
mysql 索引详解标签:mysql本文系统来源:http://lovexx.blog.51cto.com/131664/1927923
写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要100s(但实际上要好很多很多)。...