MySQL主键、创建索引、UNION 和 UNION ALL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zimiao552147572/article/details/89956064

主键


索引

ALTER TABLE 表名 ADD INDEX 索引名称 (一个或多个字段名(字段的长度size))

短索引(可以设置字段的长度size):ALTER TABLE 表名 ADD INDEX 索引名称 (一个或多个字段名(字段的长度size))

MySQL数据库的使用索引来搜索

1.MySQL数据库中的索引:
	UNIQUE(唯一索引)
	PRIMARY KEY(主键索引),本质是名叫PRIMARY KEY 的UNIQUE索引
	INDEX(普通索引)
	INDEX(组合索引)
	FULLTEXT(全文索引),搜索引擎常用

2.MySQL数据库的模糊查询速度慢,效率不高。
  模糊查询的用法分析:
	1.模糊查询的用法:字段名 like “%搜索内容%”
   	2.对“已添加索引的字段”进行模糊查询的话,分以下情况:
		1.使用 字段名 like “%搜索内容%”或 字段名 like “%搜索内容”的话,即模糊查询LIKE中以“%”或“_”开头的话,
		  是无法使用到索引进行快速查询的。
		2.使用 字段名 like “搜索内容%”,是可以使用到索引进行快速查询的。
 
3.即使字段添加了索引,但是在SQL语句中使用了以下规则进行WHERE条件过滤的话,便不会使用上“字段中添加的索引”进行快速查询:
	1.NULL值判断:因为使用NULL值判断的话,则不会使用字段中的索引。
		      所以字段的默认值应改为使用 0 或 -1 或 空字符串,字段的默认值不应为NULL值。
 	2.使用 != 或 <> 操作符:!= 和 <> 都表示不等于操作,则不会使用字段中的索引。应改为尽量使用 >、<、= 才会使用上字段中的索引。
	3.模糊查询LIKE中以“%”或“_”开头:是不会使用字段中的索引的。但如果以“%”或“_”结尾的话,还是可以使用到索引的。
	  				    可改为使用FULLTEXT(全文索引),搜索引擎常用。
	4.在where子句中使用 or 来连接条件:应使用UNION 或 UNION ALL 
	5.in 和 not in:尽量控制in的范围(1000以内)
	6.在where子句中对字段进行表达式操作:在列上进行运算的话,则不会使用字段中的索引

在where子句中使用 or 来连接条件:应使用UNION 或 UNION ALL 


SQL UNION 和 UNION ALL 操作符

1.UNION:
	1.合并两个或多个 SELECT 语句的结果集
	2.会对合并后的结果集进行去重

2.UNION ALL:
	1.合并两个或多个 SELECT 语句的结果集
	2.不会对合并后的结果集进行去重

猜你喜欢

转载自blog.csdn.net/zimiao552147572/article/details/89956064