查询oracle数据库速度慢的问题!!! 开发工具 VS2008 数据库 ORACLE 10g 数据库连接采用 Enterprise Library 4.0 新建的项目只一个页面查询 表中200多条记录,居然用5、6秒钟, 什么原因? 怎么解决啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.qqread.com/oracle/2009/06/b467163.html 1.用System.Data.OracleClient,不要用OLEDB2.定义参数查询3.分页查询数据4.nvarchar2对应C#中nvarchar,varchar2对应C#中varchar参考FortuneBase参考地址www.cnblogs.com/mail-ricklee 个人体验:Oracle功能强大,但是想很好的玩转Oracle还是要花不是心思和时间。 不像SQL SERVER 简单易懂。1,先truncate一遍数据表,再插入一些数据。肯定快了。2,建立索引。3,查询计划分析一下你的SQL 语句。4,检查你代码 设置了主键,索引,再说。即使没设置。 我调试用的,一共才200条记录。也不应该那么慢啊。 用PL/SQL查非常快的。 首先你得判断一下是不是Oracle数据库引起的?你把sql语句放pl/sql中执行一下看看,如果是的再从数据库上考虑!200条记录我觉得慢的问题更可能出在代码上 DataTable ds = new DataTable(); ds = CD.getDatabySQL("select A_ID,A_T_ID,A_TITLE,A_DETAILS,A_DATE,UPLOADFILE,NAME from ARTICLE left join ARTICLE_TYPE on ARTICLE.A_T_ID=ARTICLE_TYPE.ID order by A_ID desc"); this.DataList.DataSource = ds; this.DataList.DataBind();就这几行代码public DataTable getDatabySQL(string sql) { Database db = null; db = DatabaseFactory.CreateDatabase("Data"); DbCommand DbCommand = db.GetSqlStringCommand(sql); DataSet ds = db.ExecuteDataSet(DbCommand); return ds.Tables[0]; }这是返回数据集的函数 ARTICLE.A_T_ID=ARTICLE_TYPE.ID ARTICLE表和ARTICLE_TYPE表要建立主外建关系 不要用system.data.oracleclient装ODP.NET,这个是ORACLE为.NET提供的专用驱动,上WWW.CONNECTIONSTRING.COM找连接字符串,我一直这样用,小数据量想都不用想这种问题 ORACLE里的左连接不用LEFT JOIN 用加号就可以了SELECT A.* FROM TA A,TB B WHERE A.COL1=B.COL1(+) ORDER BY 也是要建索引滴 谢了各位,问题根本原因是表中A_DETAILS为clob类型,包含大量数据。 表和数据是别人给我的,我也没注意。 在线等 ~~急 关于贝塞尔曲线 WEB SERVICE部署出错 C#中ComboBox下拉后为一个panel 你用visual C# 调试过Hello World代码吗?是否通过了? 请问各位大佬 请问怎么取当前页面的url 用C#开发的ActiveX控件吃内存疑惑 为什么我无法获取 AsseVersion 我有一个c#问题! 谁能告诉我这段连接数据库的代码错在哪?我怀疑是我也不知道啊! VS 2005 professional Edition 没有windows service项目? window小常识(防火墙过滤)
2.定义参数查询
3.分页查询数据
4.nvarchar2对应C#中nvarchar,varchar2对应C#中varchar
参考FortuneBase
参考地址www.cnblogs.com/mail-ricklee
不像SQL SERVER 简单易懂。1,先truncate一遍数据表,再插入一些数据。肯定快了。
2,建立索引。
3,查询计划分析一下你的SQL 语句。
4,检查你代码
用PL/SQL查非常快的。
你把sql语句放pl/sql中执行一下看看,如果是的再从数据库上考虑!
200条记录我觉得慢的问题更可能出在代码上
ds = CD.getDatabySQL("select A_ID,A_T_ID,A_TITLE,A_DETAILS,A_DATE,UPLOADFILE,NAME from ARTICLE left join ARTICLE_TYPE on ARTICLE.A_T_ID=ARTICLE_TYPE.ID order by A_ID desc");
this.DataList.DataSource = ds;
this.DataList.DataBind();就这几行代码public DataTable getDatabySQL(string sql)
{
Database db = null;
db = DatabaseFactory.CreateDatabase("Data");
DbCommand DbCommand = db.GetSqlStringCommand(sql);
DataSet ds = db.ExecuteDataSet(DbCommand);
return ds.Tables[0];
}
这是返回数据集的函数
ARTICLE表
和
ARTICLE_TYPE表要建立主外建关系
装ODP.NET,这个是ORACLE为.NET提供的专用驱动,
上WWW.CONNECTIONSTRING.COM找连接字符串,
我一直这样用,小数据量想都不用想这种问题
ORACLE里的左连接不用LEFT JOIN 用加号就可以了
SELECT A.* FROM TA A,TB B WHERE A.COL1=B.COL1(+)
ORDER BY 也是要建索引滴