大表检索的性能问题

[复制链接]
查看11 | 回复9 | 2011-11-1 16:26:29 | 显示全部楼层 |阅读模式
本帖最后由 gongcheng28 于 2012-8-14 15:11 编辑
在开发时发现一个问题,有两张大表。都有500万的数据。
其中一张做select count(1) from table_name的操作。
另外一张做
select *
from table_name222
where id like '%201032%'
ps:该表已经做过分析。analyze table table_name222 estimate statistics;
这两张表都没有索引的。一个索引都没有。
1,当session里面只做第二个like查询的时候,只要1秒钟。
2,但是当session里,第一个count正在统计的时候,第二个like查询就很慢,要20秒。
也不是想做优化,就是想研究一下这个到底是什么原因。
大侠们看看啊?是cpu或者内存的资源问题吗?
谢谢

回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
id like '%201032%' 201032前面加%号后 查询就不走索引了
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
like本身就慢
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
本帖最后由 atgc 于 2012-8-14 08:38 编辑
如果是笔记本1秒不太可能,除非是有索引,且是第二次查询。硬件好一点1秒有可能。
另外,500万条记录,是只有1个字段,这个字段宽度是1个字节吗?
除了记录数,还有平均行长影响着性能。不过很多人往往只说多少多少记录数

回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
xiemingxmy 发表于 2012-8-13 20:22
id like '%201032%' 201032前面加%号后 查询就不走索引了

本来表就没有设置索引。。。
只是想了解,这种情况的原因。。
不是为了去优化
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
dnfonbbs 发表于 2012-8-13 20:27
like本身就慢

主题上说了。。。没有资源被占用的话,like很快的。。1秒钟都不到。
而且你有什么理由说like很慢吗?
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
atgc 发表于 2012-8-14 08:37
如果是笔记本1秒不太可能,除非是有索引,且是第二次查询。硬件好一点1秒有可能。
另外,500万条记录,是只 ...

就是普通的pc。。
确实是1秒。。没有索引。。
数据是500万。每条记录有50个字段。。检索的id字段的定义为varchar2(128)
行长是有影响。。但是主题主要是想了解这个查询会慢的原因。。而第一次和第二次返回的行长是一样的。所以排除了这个原因。。
补充一点,数据库是11gr2的。
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
你的慢是指什么情况,两个查询同时执行吗?
还是单独执行两个都慢?
你的正常情况下只有1秒,正常情况是指?执行什么查询?
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
因为一个估计走的主键查询,一个全表
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
jnccyd 发表于 2012-8-14 09:56
你的慢是指什么情况,两个查询同时执行吗?
还是单独执行两个都慢?
你的正常情况下只有1秒,正常情况是指 ...

贴子上说过了啊,就是第一次查询和第二次查询啊。没说同时啊。
怎么变成两个都慢了呢??????
是第一次只要1秒,第二次要18秒啊。
第一次,整个数据库就执行一个like的查询sql。。session里面没有其它动作。。只要1秒。
第二次,session里面有其它几个大表的统计。。再同时执行like的查询要18秒。。
清楚了?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行