表中必须建索引,可以建多个,原则是:" ....where 字段....."中的字段必须建索引,自段要是多的话,可以建多个索引。
解决方案 »
- 2008 R2 Standard 多行转一列
- 取出表中的某一列的值 让之变成数组如何处理?
- 进销存表的索引视图怎样建最有优化?
- 求一条复杂的sql
- 这样的SQL怎么写呀????????
- 这条数据库查询语句该怎么写(ASP)?
- 如何在一个存储过程中利用另一存储过程形成的数据集?
- 请问怎样在企业管理器里面修改用户名和密码?我看了一下还是不行阿,$100
- 两台win98的机器,一台上装有sql server7.0桌面版,如何在另一台机器上连接它?
- 请问如何用vb和远程数据库orable连,请各位大侠帮忙。
- 熟悉sql server7.0 存储过程的高手请进
- 用过VC开发数据库程序的同志们请看过来,看过来!!!! 急需帮忙!!!!
但是如果你使用SQL Server 2000,保证你在3秒内得到结果!
general2000:你这个问题涉及内容太多了,去看oralce的文档吧。步骤1:优化商业规则
步骤2:优化数据设计
步骤3:优化应用程序设计
步骤4:优化数据库逻辑结构
步骤5:优化数据库系统
步骤6:优化存取路径
步骤7:优化内存分配
步骤8:优化I/O与物理结构
步骤9:优化资源配置
步骤10:优化支撑平台
你的问题很多,怎么不见你结帐?
如果Oracle功能强大,为什么默认情况下不发挥它的最大效果!
另外,建议在设计应用的时候,要充分考虑程序日后的扩展,比如前面那位同志说有500万条记录,要在半分钟内查处结果,那你为什么不考虑一下吧你这个500万条记录的表按照某种规则分成若干个表?比如说按照记录生成的日期来分,每个月的数据放在一个表里。
老兄要处理500万条纪录,不会是玩玩就罢了。做多少事就要有多少投资,又要马儿,不要马儿不吃草,天下那有这种好事?
liu7537(一飞):oracle的默认设置性能是非常差的,大概他们没想到有人会用这样的环境来处理比较大的应用,更没想到有人用此来处理500万的纪录。
(From Oracle8 Advanced Tuning & Administration)*. Managing data proximity
*. Avoiding unhelpful index scans
*. Creating fully indexed tables (recommend)
*. Creating hash clusters
*. Creating partitioned tables and views (recommend)
*. Implementing parallel options
我的结果是0.04秒,机器是C500,96M内存,ORACLE8.17。
code是主键。
dbauser@MCHT_DB> select count(*) from test_b; COUNT(*)
----------
5000000dbauser@MCHT_DB> declare
2 l_start number default dbms_utility.get_time;
3 row_tb test_b%rowtype;
4 begin
5 select * into row_tb from test_b where code=2907857;
6 dbms_output.put_line( round( (dbms_utility.get_time-l_start)/100, 2 )||' seconds...' );
7 end;
8 /
.04 seconds...PL/SQL procedure successfully completed.dbauser@MCHT_DB>
这样的语句我这边也很快!
而且用select count(*) from tabel要比检索一条记录慢很多。
*. Creating fully indexed tables (recommend)
*. Creating hash clusters
*. Creating partitioned tables and views (recommend)
有谁设计过这么大数量的表,给大家共享一下,我先代表大家谢谢您了!想OICQ不知道他的表结构是怎么设计?他的数据有千万条级的,要是有谁能说一下那就好了!
我看OICQ查询的时候挺快的,而且是广域网,实在是不易呀!
建立分区到底是怎么一会事,我不理解您们所说的是什么意思?能不能稍微详细一点?
还有SQLSERVER2000真的比ORACLE快这么多吗?
还有一种叫CLUSTER TABLE(簇表),你也可以试一下.
我没有好好的用过这两种特殊的表, 你要自己试了才知道结果. 按理说会提高搜索性能
你听说过MS SQL Server有DBA吗?因为MS SQL Server没有需要Tuning的地方
Oracle没有DBA你试试看,Oracle之所以能快,主要是要认真的Tuning
Alpha1997:你说SQL SERVER没有DBA是好还是坏呀?
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
</HEAD>
<OBJECT classid="clsid:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F" id=AgentControl style="LEFT: 0px; TOP: 0px"></OBJECT>
<Script Language="JavaScript">
<!--//
// * Character Objects
var Merlin;// * Variables
var UsedChars;
var MerlinID;
var MerlinACS;
var MerlinURL;
var MerlinStates;
var MerlinAnimations;
var MerlinReq;
var MerlinStatesReq;
var MerlinAnimationsReq;
var MerlinLoaded;
var LoadReq;
var HideReq;
var MerlinLeftX, MerlinCenterX, MerlinRightX;
var MerlinTopY, MerlinCenterY, MerlinBottomY;// * Initialize
UsedChars = "Merlin";// * Merlin
MerlinID = "Merlin";
MerlinACS = "Merlin.acs";
MerlinURL = "http://agent.microsoft.com/agent2/chars/merlin/merlin.acf";
MerlinStates = "Showing, Hiding, Speaking, Moving, Gesturing, Idling, Hearing, Listening";
MerlinAnimations = "GestureLeft, Surprised";
MerlinLoaded = false;
Window_OnLoad();
function Window_OnLoad() {
AgentControl.Connected = true;
MerlinLoaded = LoadLocalAgent(MerlinID, MerlinACS);
if (MerlinLoaded) {SetCharObj();}
CheckLoadStatus();
}
function LoadLocalAgent(CharID, CharACS) {
AgentControl.RaiseRequestErrors = false;
LoadReq = AgentControl.Characters.Load(CharID, CharACS);
AgentControl.RaiseRequestErrors = true;
if (LoadReq.Status != 1) {return(true);}
return(false);
}
function SetCharObj() {
Merlin = AgentControl.Characters.Character(MerlinID);
Merlin.LanguageID = 0x409;}
function CheckLoadStatus() {
if (!MerlinLoaded) {
window.status = "Loading " + MerlinID + " Character. Please Wait...";
MerlinReq = AgentControl.Characters.Load(MerlinID, MerlinURL);
return(false); }
window.status = "";
AgentIntro();
return(true);
}
function LoadError() {
var strMsg;
window.status = "";
strMsg = "Error Loading Character: " + MerlinID + "\n";
strMsg = strMsg + "This Microsoft Agent Script requires the character(s):\n";
strMsg = strMsg + UsedChars;
alert(strMsg);
}
function GetScreenPositions() {
var ScreenWidth = window.screen.width;
var ScreenHeight = window.screen.height;
if ((ScreenWidth == 0) || (ScreenHeight == 0)) {
ScreenWidth = 800;
ScreenHeight = 600;
}
MerlinCenterX = (parseInt(ScreenWidth / 2) - parseInt(Merlin.Width / 2));
MerlinRightX = (ScreenWidth - Merlin.Width);
MerlinCenterY = (parseInt(ScreenHeight / 2) - parseInt(Merlin.Height / 2));
MerlinBottomY = (ScreenHeight - Merlin.Height);
}
function InitAgentCommands() {
Merlin.Commands.RemoveAll();
Merlin.Commands.Caption = "My Menu Name";
Merlin.Commands.Add("ACO", "Advanced Character Options", "Advanced Character Options");
}
function AgentIntro() {
GetScreenPositions();
InitAgentCommands();
// Merlin.MoveTo(MerlinLeftX, MerlinTopY);
// Merlin.Show();
// Merlin.Play("GetAttention");
// Merlin.Play("GestureLeft");
}
function PageStart(){
// Merlin.Play("GetAttention");
// Merlin.Play("GestureLeft");
Merlin.MoveTo(Math.round(Math.random()*800),Math.round(Math.random()*600));
Merlin.Show();
Merlin.Speak('Hello,Welcome to Music World!');
Merlin.MoveTo(Math.round(Math.random()*800),Math.round(Math.random()*600));
Merlin.Play("Wave");
Merlin.Speak("Bye Bye!");
Merlin.Hide(2);
setTimeout("PageStart()",15000);
}
//-->
</script>
<body onload="PageStart()">
</body>
</html>
别拿那个傻傻的merlin的agent出来献丑了,csdn把html定义符给转换了to KingSunSha:
在oracle中,通常partation table是用来按照某种条件(例如年份、编号等)将纪录分开保存在不同的tablespace里面的,可以提高基于这些条件上检索的速度(主要是可以缩小查询的范围),将大表的数据分到不同的位置存储来使用的,跟你说的不太一样。:)
如果找出一条,你能给500RMB,相信你会破产的。:)just a joke. 事事无绝对,数据库方方面面牵扯因素很多,oracle也不是处处都比sql server好。
谢谢指正!你说的不错。因为以前没有遇到过这种应用,所以对partation table也不是很了解,只记得在某些特殊的场合可以提高搜索速度。to All:
大家也别争oracle和sql server那个更好了,一方面是每个应用的要求不一样,另一方面青菜、萝卜各有所爱。
这仅仅是我个人的浅见,有不同意的请不要用臭鸡蛋等东西扔我,我怕!
如果较好的话,可以试试并行度。
ORACLE表有并行度的问题。用ORACLE8i的话,可以在图形界面上直接设置表的并行度。
理论上说起来似乎ORACLE应该比SQL SERVER快很多,但是,在实际运用过程中,好象不是那么回事。
请高手指点!
不过,如果是只会提醒别人多看ORACLE文档的“高手”,就免了。
当然,别告诉我你还是用C400,内存64M。:-)
有行级锁了我认为,小的MIS系统用MS SQLServer是比较经济的,而如果单表记录会超过100万的话,就一定要
扔掉MS SQLServerto general2000(进京农民) :
哪是Oracle老板说的,不过是有一定前提的
实际中,因为Oracle 的Tuning确实非常复杂(一家大公司的普通Oracle DBA年薪至少在8万$
以上,而美国程序员的年薪远没有这么多),所以如果Oracle没有Tuning好的话,速度真的要比
没作任何Tuning(说真的,我真不清楚MS SQLServer有什么要Tuning的)MS SQLServer慢.有朋友说不用Tuning是MS SQLServer的优点,我觉得对于速度没什么要求的系统来说,可以这么
说,但对于速度要求较高的系统,Oracle我想就Professional得多;至于是不是趋势我觉得不好说
因为世界上事物本向的复杂性决定的软件的复杂性和不可见性,数据库也一样,所以如果能有数据库
软件有一天不用DBA也可以适合各种不同的应用的话,至少AI已经完全替代程序员和分析员的哪一天.
我的回车一打就出来结果了不过我现在要检索一批数据就是问题了
我用的是LIKE语句,一下子要把400万条数据一下子给检索出来,那就很慢了!
你这样的检索要求,什么系统都快不了啊,网络,本机内存都吃不消啊
2, 检索一批数据的速度不光是数据库查询的问题,如果返回纪录特别多, 光是数据传输就要很长的时间. 你自己考虑一下没什么要这么做
它怎么找记录的?