什么是索引?如何通过索引优化mysql查询
索引 当MySQL单表记录数过大时,增删改查性能都会急剧下降。MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度。一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的,而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量。 索引优势和劣势: 优势: 大大减少了服务器需要扫描的数据量,可以帮助服务器避免排序和临时表,实现快速检索,将随机I/O变成顺序I/O,减少I/O次数,加快检索速度;根据索引分组和排序,可以加快分组和排序; 劣势: 索引本身也是表,因此会占用存储空间,一般来说,索引表占用的空间的数据表的1.5倍;索引表的维护和创建需要时间成本,这个成本随着数据量增大而增大;构建索引会降低数据表的修改操作(删除,添加,修改)的效率,因为在修改数据表的同时还需要修改索引表;创建索引时需要对表加锁,因此实际操作中需要在业务空闲期间进行。 索引类型 Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。 FULLTEXT 即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用