最近遇到一个很奇怪的的问题。
在一个表中,大概10万条数据,select count(*) from my_table like '%月亮%'
竟然需要8秒钟的样子。
奇怪的是,在另外一个测试环境中(我认为两个环境都相同),执行时间不到1秒都快疯了,各位达达能帮忙么?
不胜感激!
在一个表中,大概10万条数据,select count(*) from my_table like '%月亮%'
竟然需要8秒钟的样子。
奇怪的是,在另外一个测试环境中(我认为两个环境都相同),执行时间不到1秒都快疯了,各位达达能帮忙么?
不胜感激!
解决方案 »
- 不同操作系统的数据库导出导入
- 怎么将SQL2008中的函数和存储过程导入到Oracle中
- 急,在线等,截取前四位,返回值为VARCHAR2类型
- 请教ORACLE的企业管理控制台登录问题
- 求Oracle10g在Windows 2000或者2003或者XP做RAC的文档
- 请教高手:在Oracle中根据主键值分批取数据如何实现?
- !!!!!!急啊,100分求救,redhat9下安装oracle,为什么我下载了Oracle8.17后,双击runintaller后什么反应也没有,命令行也不行,怎么
- 如何获得oracle中一张表的前十个记录。
- SOS:ORA_03113: 通信通道的文件结束.高分相送。加急,在线等......
- 怎样用语句删/建主键?
- 请教小数转百分数的问题
- 迷惑,关于 oracle pro*c/c++
SQL> AS SELECT * FROM my_tab;然后再测试SQL>select count(*) from test_my_table like '%月亮%';看看用了多长时间
alter system flush shared_pool;
然后再执行看看。
估计使用8秒是全表扫描,可以试试以下:
select /*+ rule */count(*) from my_table where col_name like '%月亮%'
的方法貌似没有用
具体的查询过程是把“*”全部解析为表的列名,然后再集计
然而,select count(列名)
不用解析,直接集计得
select count(主键) from table_name 这样最好,如果没有主键,比如ID这样的,那么至少也要查询已经带索引的列,你试过就知道了,速度和给数据库带来的影响是完全不同的!