以下的文章主要描述的是mysql SHow INDEX语法的实际操作用法以及其实际查看索引状态(语法)的具体内容的描述,如果你对这一技术,心存好奇的话,以下的文章将会揭开它的神秘面纱。
MySQL SHOW INDEX会返回表索引信息。其格式与ODBC中的SQLStatistics调用相似。
MySQL SHOW INDEX会返回以下字段:
表的名称。
Non_unique
如果索引不能包括重复词,则为0。如果可以,则为1。
索引的名称。
Seq_in_index
索引中的列序列号,从1开始。
Column_name
列名称。
列以什么方式存储在索引中。在MySQLSHOW INDEX语法中,有值’A’(升序)或NULL(无分类)。
Cardinality
索引中***值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大。
如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。
指示关键字如何被压缩。如果没有被压缩,则为NULL。
如果列含有NULL,则含有YES。如果没有,则该列含有NO。
Index_type
用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。
多种评注。
您可以使用db_name.tbl_name作为tbl_name FROM db_name语法的另一种形式。这两个语句是等价的:
SHOW KEYS是MySQL SHOW INDEX的同义词。您也可以使用mysqlshow -k db_name tbl_name命令列举一个表的索引。

SHOW INNODB STATUS语法
在MySQL 5.1中,这是SHOW ENGINE INNODB STATUS的同义词,但不赞成使用。
【编辑推荐】
Match与Index函数怎样应用
INDEX() 和 MATCH() 您可以将 INDEX 函数和 MATCH 函数一起使用,以获取与使用 LOOKUP 或 VLOOKUP 相同的结果。下面是一个语法示例,它组合使用 INDEX 和 MATCH,以便与前面示例中的 LOOKUP 和 VLOOKUP 产生相同的结果: =INDEX(Table_Array,MATCH(Lookup_Value,Lookup_Array,0),Col_Index_Num)
SQL中IN和EXISTS用法的区别
一、EXISTS 并非总比IN 快,究竟应该选用 IN 还是 EXISTS ,可参考以下分析:1、Select * from t1 where x in ( select y from t2 )相当于select *from t1, ( select distinct y from t2 ) t2 where t1.x = t2.y;2、select * from t1 where exists ( select null from t2 where y = x )相当于 for x in ( select * from t1 ) loopif ( exists ( select null from t2 where y = x.x )then OUTPUT THE RECORDend if end loop如果t2的记录很多而t1的记录相对较少的话,建议采用第二种写法;相反,如果t1的记录很多而t2的记录相对较少,则建议采用第一种写法。其它情况,则需要仔细分析再决定是选择IN还是选择EXISTS二、NOT IN 并不等价于NOT EXISTS例如下面这两个句子,只有在t1.c1不为NULL的时候,两者返回的记录才是相同的,大家在用NOT EXISTS来替换NOT IN 时可能会忽略掉这一点select t1.*from table1 t1 where not exists (select t2.c1 from table2 t2 where t2.c1 = t1.c1)select t1.*from table1 t1 where t1.c1 not in (select t2.c1 from table2 t2)
mysql数据库查询好慢怎么解决
28万条数据量不是很大,字段稍微有点多,如果不加WHERE 条件的话,数据库判定是查询所有数据库,而加了WHERE 条件时,数据库判定要去详细的查找某个数据,所以速度自然会慢,建立索引可以解决您的问题;CREATE INDEX 索引名 ON 表名 (WHERE 条件用到的列名,如有多个就以逗号分隔);这次在去WHERE 的时候就会快很多
发表评论