mysql查询慢怎么解决
mysqlinnodbcount(distinct)很慢,怎么优化?
mysqlinnodbcount(distinct)很慢,怎么优化?
1. 把你的day字段类型改为long型,在页面显示的时候在格式化成自己需要的样式;
2. 在day字段上建立索引;
3. 把ip_4表类型有InnoDB改为MyISAM,如果不需要事物支持的话,建议不要使用InnoDB。
sql中in的语句好慢,有什么好方法可取代?
1、对于索引列来最好使用unionall,因复杂的查询【包含运算等】将使or、in放弃索引而全表扫描,除非你能确定or、in会使用索引。
2、对于只有非索引字段来说你就老老实实的用or或者in,因为非索引字段本来要全表扫描而unionall只成倍增加表扫描的次数。
3、对于及有索引字段【索引字段有效】又包含非索引字段来时,按理你也使用or、in或者unionall都可以,但是我推荐使用or、in。
mysql为什么千万级别查询比1000条数据的查询慢?
这是自然规律使然。
形象一点来讲,有人将各一枚硬币分别丢进一碗水里和一口水塘里,然后您要将它们捞出来,哪个任务完成的快?当然是前者了,因为工作量没法比啊! 数据库查询道理也是一样的,数据越多从中检索出记录的速度越慢。你也许会说数据库不是有索引吗?咱不用从头到尾逐条检索呀。没错,有索引数据库引擎可以直奔目标,检索少量数据的时候,1千条记录跟千万条记录比,从中检索出记录的耗时相差无几,但是如果要检索出所有记录的话,两者的系统和时间开销可就不是一个数量级了,后者肯定慢得多。管理一个小仓库跟管理一个巨型仓库的人力、物力开销肯定是不一样的,数据库表查询也同理!
mysql中数据量大时超30万,加上order by速度就变慢很多,一般需要0.8秒左右,不加只需要0.01几秒?
那肯定的
ORDERY BY是要对某个字段进行排序的,有人喜欢加索引解决,但是若是对于一个频繁有写操作的表来说,一个索引还好说,要是有多个索引,数据表的大小增加会相当惊人
另上,建议使用InnoDB引挚,有人说这样速度会快很多
对于大数据级的数据库来说,最关键的一步还是要优化好你的SQL,还有就是使用非常规的作法,供参考
1,以牺牲空间换取速度,就是说看能不能进行一些适当的缓存
2,以牺牲速度换取空间,这对于小空间容量的主机可以采用