mysql中,分表查询和索引查询哪个更快?

dr259

“我是哟哟吼说科技,专注于数据网络的回答,欢迎大家与我交流数据网络的问题”

如题,在mysql中,分表查询和索引查询那种方式更快?

哟哟认为查询速度的快慢要针对于表里数据的多少来定,并且分表查询时也要将索引引入才能更快的将目标数据进行锁定,单纯的来对比分表查询和索引查询的话,个人感觉索引查询相对比要快一些。

在mysql中为什么会建立多个表呢?

这是因为在庞大数据量存储时,建立多个表可以将数据进行均匀的分布,每一个表内对应单独的一项数据,查询或调用时可以方便调取;若没有分表的话,所有的数据可能存在一个表中,在写入或查询调取时会增加数据库的负担,延长查询时间,增加磁盘的IO,因此针对大数据量存储时最好建立不同类别的表,可以更方便更快捷的写入并调取。

索引是对数据库表中一列或多列的值进行排序的结构,用于快速查询数据库表中的特定记录,提高查询速度。

不论是分表查询还是单表查询一定要引入索引,这样才能更快的定位目标数据。

因此哟哟认为,在数据量很大的情况下,建议分表+索引查询可能速度更快,若数据量很小的情况下,直接索引查询即可。


哟哟吼说科技

查询快慢主决的因素有很多,存储碎片、数据量大属于I/O类问题;表结构设计、查询语句属于技术是否熟练(经验)问题。对于你的分表快还是索引快的这个问题本身就是有问题的:

在建立数据表的时候,索引是必须的,主键就是唯一索引,

我认为需要关注查询快慢的时候,必定是单表数据量越来越大,或是已预见数据量会越来越大,例如日志表、流水记录等,要不就是查询时关联的表比较多。

如果是像配置类数据表数据量有限的表,加不加除了主键以外索引影响不大。

基于单数据库来说,

那么数据量大,增速快的表要想加查询速度的首先索引是必须的,再加上分区或是分表才能有效的提升效率,有必要还可以做读写分离,

但是在做分表时怎么分就要讲究了,分表可以按字段(纵向)分,也可以按某(些)字段的值特性(横向)去分,总之要尽量达到在同一分表中的数据特性相同,在生成SQL时,代码可以决定向哪几个分表查,达到避免查询无关的分表,查询的表越少,需要扫描的记录越少,效率肯定越高,如果达不到减少读表和记录的话,分表不但不会变快,反而变慢。


仰望星的那头

当然索引快,没有索引要线性搜索,如果记录靠后几乎是全表搜索。理论上只要有索引,搜索速度跟记录数没有关系,索引是一张独立的HASH表。但记录数多的时候,写入索引会变慢。

分表呢只是解决表文件大小问题,和索引不是一回事,而且MYSQL有分区表功能,不用手工维护分表。


分享到:


相關文章: