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

[更新]
·
·
分类:互联网
4188 阅读

mysql索引总结

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

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

谢谢邀请!
查询快慢主决的因素有很多,存储碎片、数据量大属于I/O类问题;表结构设计、查询语句属于技术是否熟练(经验)问题。对于你的分表快还是索引快的这个问题本身就是有问题的:
在建立数据表的时候,索引是必须的,主键就是唯一索引,
我认为需要关注查询快慢的时候,必定是单表数据量越来越大,或是已预见数据量会越来越大,例如日志表、流水记录等,要不就是查询时关联的表比较多。
如果是像配置类数据表数据量有限的表,加不加除了主键以外索引影响不大。
基于单数据库来说,
那么数据量大,增速快的表要想加查询速度的首先索引是必须的,再加上分区或是分表才能有效的提升效率,有必要还可以做读写分离,
但是在做分表时怎么分就要讲究了,分表可以按字段(纵向)分,也可以按某(些)字段的值特性(横向)去分,总之要尽量达到在同一分表中的数据特性相同,在生成SQL时,代码可以决定向哪几个分表查,达到避免查询无关的分表,查询的表越少,需要扫描的记录越少,效率肯定越高,如果达不到减少读表和记录的话,分表不但不会变快,反而变慢。
即时原创回答,个人的一些体验,仅供参考!

mysql历史表索引如何设计?

我公司项目会产生大量数据,会把它存进历史表,每个月会新产生一张历史表,查询时候是写的存储过程根据时间多表查询放进一张临时表,最后再查询这张临时表返回结果。
上面是背景,即使这样,每天表里还是会产生100多w数据,所以查询超过七天的话还是很久要十几秒。
里面有9个字段,查询会涉及三个id字段,为int类型,内容大小都四位数以内,而且不是单个单个查询,是多个多个一起查,懂不?
另外还有一个字段,就是时间,因为查询时间大多数会以时间范围查询,字段为datetime
问题:
1.我有必要给时间加聚集索引吗?
2.还需要怎么设计才能让查询更快。要查询的字段都放在where里

对于这种情况,先把数据库读写分离。
就是主数据库不变,用于应付正常的生产活动。
然后把历史数据,复制一份到从数据库(另外配置服务器),查询时,在从数据库上查询,这样查询时,不会影响主数据库的正常业务执行。
对于从数据库,因为是对历史进行查询,不会改数据,在现有技术力量下,可以直接上分布式数据库 tidb,兼容mysql,可以多台服务器集群。效率一下子就上去了。