索引

1、索引是什么

  索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。
  可以理解为“排好序的快速查找数据结构”
  在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,
这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

2、优势

  类似大学图书馆建书目索引,提高数据检索效率,降低数据库的IO成本。
  通过索引对数据进行排序,降低数据排序的成本,降低了CPU的消耗。

3、劣势

  实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也是要占空间的。
  虽然索引大大提高了查询速度,同时确会降低更新表的速度,如对表进行INSERT、UPDATE、DELETE。
  因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段。
都会调整因为更新所带来的键值变化后的索引信息。 
建立索引会占用磁盘空间的索引文件。

4、索引的分类

  主键索引、唯一索引、普通索引、全文索引、组合索引

5、基本语法

1,INDEX(普通索引):

ALTER TABLE 'table_name' ADD INDEX index_name('col')

最基本的索引,没有任何限制

2,UNIQUE(唯一索引):

ALTER TABLE 'table_name' ADD UNIQUE('col')

与“普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。

3,PRIMARY KEY(主键索引):

ALTER TABLE 'table_name' ADD PRIMARY KEY('col')

是一种特殊的唯一索引,不允许有空值。
4,FULLTEXT(全文索引):

ALTER TABLE 'table_name' ADD FULLTEXT('col')

仅可用于MyISAM和InoDB,针对较大的数据,生成全文索引很耗时耗空间
5,组合索引:

ALTER TABLE 'table_name' ADD INDEX index_name('col1','col2','col3')

为了更多的提高mysql效率可建立组合索引,遵循“最左前缀”原则。创建复合索引应该将最常用(频率)做限制条件的列放在最左边,一次递减。组合索引最左字段用in是可以用到索引的。相当于建立了col1,col1col2,col1col2col3三个索引
修改索引名称(mysql)
对于MySQL 5.7及以上版本,可以执行以下命令:

ALTER TABLE tbl_name RENAME INDEX old_index_name TO new_index_name

对于MySQL 5.7以前的版本,可以执行下面两个命令:

ALTER TABLE tbl_name DROP INDEX old_index_name

ALTER TABLE tbl_name ADD INDEX new_index_name(column_name)

    
6、哪些情况需要创建索引
    ①主键自动建立唯一索引
    ②频繁作为查询条件的字段应该创建索引
    ③查询中与其他表关联的字段,外键关系建立索引
    ④频繁更新的字段不适合建立索引,因为每次更新不单单是更新了记录还会更新索引
    ⑤WHERE条件里用不到的字段不创建索引
    ⑥单键/组合索引的选择问题,who?(在高并发下倾向创建组合索引)
    ⑦查询中排序的字段,排序的字段若通过索引去访问将大大提高排序速度
    ⑧查询中统计或者分组字段
7、哪些情况不要创建索引
  ①表记录太少
  ②经常增删改的表
    提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE、和DELETE。
    因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
    数据重复且分布平均的表字段,因此应该只为最经常查询和最经常排序的数据建立索引。
  ③注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。

索引使用注意事项

1,不要滥用索引

①,索引提高查询速度,却会降低更新表的速度,因为更新表时,mysql不仅要更新数据,保存数据,还要更新索引,保存索引
②,索引会占用磁盘空间

2,索引不会包含含有NULL值的列

复合索引只要有一列含有NULL值,那么这一列对于此符合索引就是无效的,因此我们在设计数据库设计时不要让字段的默认值为NULL。

3,MySQL查询只是用一个索引

如果where字句中使用了索引的话,那么order by中的列是不会使用索引的

4,like

like '%aaa%'不会使用索引而like "aaa%"可以使用索引

转载于:https://www.cnblogs.com/BrokenHeart/p/10616159.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值