数据库中存有大量日志数据,程序界面提供各种查询条件的查询。(譬如日期查询+日志级别查询+....)
但是数据量相当大,一执行SQL语句就会花费很长时间。
请问有何良策?或者可以从算法角度来解决。加索引,和做stored procedure都试过,但是效果不好。
但是数据量相当大,一执行SQL语句就会花费很长时间。
请问有何良策?或者可以从算法角度来解决。加索引,和做stored procedure都试过,但是效果不好。
解决方案 »
- log4j写入数据库 log4j:ERROR Failed to excute sql java.sql.SQLException: ORA-00917: 缺失
- java中怎么把Long转换成日期格式
- 如何初始化时选中checkbox。。。。
- 找出字符串中规定数字的正则表达式
- JSON 反序列化为 JavaBean对象
- 请教:在windows下还是在linux下在执行JAVA程序时老是被卡住
- 清华同方的电子政务部怎么样?有人知道吗?
- 求救:向oracle数据库中添加纪录会错位的问题
- 为什么我的CMP部署第一次运行正常,以后运行报No such entity错误?在线!!
- 谁有JMS的技术文档,中英文不限,up有分,不够另外再加!
- 跪求高手给我个免费的Java项目开发合作的机会!
- 五种正确程序注释方式
SQL语句是:
SELECT * FROM log WHERE level=1 AND (date BETWEEN '2010-1-1' AND '2010-2-2')
全文检索
NoSQL
oracle partition table
还有办法就是加表分区,但是要注意表分区不能加在date字段上,按你的sql应该加在level上。
1)+索引是必须的l(level字段,和date字段)2)SQL 语句改为:SELECT 字段1,字段2…… FROM log WHERE level=1 AND (date BETWEEN '2010-1-1' AND '2010-2-2')3)把log表 分区4)缓存部分离线数据,页面上不可能一次就显示几千万条数据吧?
看sql语句还看不出来是mysql数据库,只能说你数据库水平一般了,要不然就是没接触过mysql