MySQL查询耗时过长问题 本帖最后由 zmx198768 于 2010-04-20 15:41:02 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 count(*)意味着,要不就扫描全表,要不就扫描全索引,都是耗时的事情。因为你没带任何条件。只能系统自己判断哪种扫描稍快一点了。相反,只根据index条件获取符合条件的记录,只需要通过索引快速定位记录,反而很快。道理就是这样子。 我耗时长的查询是根据主键查询的,而不是count(*)另外,这张表我没有任何索引 主键会自动创建索引的,所以这张表上MESSAGE_ID做为主键,MYSQL已经创建了这个字段的唯一索引。 SELECT Count(MESSAGE_ID) FROM blog_message 是全表/全索引遍历。 所以会花时间比较长。navicat中直接查询表信息的话一下子就可以统计出来总共有多少条记录了。这个是通过 information_schema.tables 中的记录得到的信息,并不一定准确,你可以直接 select * from information_schema.tables 也会很快得到相关信息。 我现在想做的是查询blog_message这张表里面的记录总数,有没有简便的方法可以快速实现? 我现在想做的是查询blog_message这张表里面的记录总数,有没有简便的方法可以快速实现?一般而言,SELECT Count(MESSAGE_ID) FROM blog_message是简便的方法 有倒是有,不过,走的是旁道。针对 该表写两个触发器,insert, delete,每insert一次,在另一个表sum里头,加1,delete一次,减1这样,每次你直接从sum里头取值就完了。 另外建立了一个索引执行语句EXPLAIN SELECT count(message_id) FROM blog_message WHERE blog_id !='';耗时0.25S 各位帅哥大哥们,MySql中这个联合查询是怎么回事。 同一个字段的2次排序问题~ 我刚装了mysql 可是在测试MySQL工作是否正常的时候遇到了问题 请问多表联合查询的问题 ,谢谢 mysql自动增长列 求助:这是什么错误。。。。 谁有windows下MYSQL工具给一个吧,phpmyadmin太麻烦了。 在linux下 找不到mysql.sock怎么办? 如果在MYSQL里面封装ISNULL函数 如何登录mysql数据库,不用重新输入密码! MySQL转PostgreSQL 的Group by问题 100分 请教一下MYSQL的版本问题
相反,只根据index条件获取符合条件的记录,只需要通过索引快速定位记录,反而很快。道理就是这样子。
我耗时长的查询是根据主键查询的,而不是count(*)另外,这张表我没有任何索引
这个是通过 information_schema.tables 中的记录得到的信息,并不一定准确,你可以直接 select * from information_schema.tables 也会很快得到相关信息。
我现在想做的是查询blog_message这张表里面的记录总数,有没有简便的方法可以快速实现?
SELECT Count(MESSAGE_ID) FROM blog_message
是简便的方法
有倒是有,不过,走的是旁道。针对 该表写两个触发器,insert, delete,
每insert一次,在另一个表sum里头,加1,delete一次,减1
这样,每次你直接从sum里头取值就完了。
执行语句
EXPLAIN SELECT count(message_id) FROM blog_message WHERE blog_id !='';
耗时0.25S