这个
SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE '%some_value%';
Run Code Online (Sandbox Code Playgroud)
比这慢
SELECT * FROM SOME_TABLE WHERE SOME_FIELD = 'some_value';
Run Code Online (Sandbox Code Playgroud)
但是这个怎么样?
SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE 'some_value';
Run Code Online (Sandbox Code Playgroud)
我的测试表明第二个和第三个例子完全相同.如果这是真的,我的问题是,为什么要使用"="?
Oracle中的AFAIK ROWID表示适当数据文件中记录的物理位置.在哪种情况下,记录的ROWID可能会改变?
我所知道的是分区表上的UPDATE,它将记录"移动"到另一个分区.
还有其他案例吗?我们的大多数数据库都是Oracle 10.
我想提取结果并计算每个名字被拉多少但没有分组......
例如,我想要这个:
John Doe 3
John Doe 3
John Doe 3
Mary Jane 2
Mary Jane 2
Run Code Online (Sandbox Code Playgroud)
而不是这个:
John Doe 3
Mary Jane 2
Run Code Online (Sandbox Code Playgroud)
那有意义吗?
谢谢.
我有一个包含多个帐户字段的表格,如下所示:
MAIN_ACCT
GROUP_ACCT
SUB_ACCT
Run Code Online (Sandbox Code Playgroud)
我经常需要像这样组合它们:
SELECT MAIN_ACCT+'-'+GROUP_ACCT+'-'+SUB_ACCT
FROM ACCOUNT_TABLE
Run Code Online (Sandbox Code Playgroud)
我想要一个自动执行此操作的计算字段,所以我可以说:
SELECT ACCT_NUMBER FROM ACCOUNT_TABLE
Run Code Online (Sandbox Code Playgroud)
做这个的最好方式是什么?
我正在使用SQL Server 2005.
我有Delphi 2007代码,如下所示:
procedure WriteString(Stream: TFileStream; var SourceBuffer: PChar; s: string);
begin
StrPCopy(SourceBuffer,s);
Stream.Write(SourceBuffer[0], StrLen(SourceBuffer));
end;
Run Code Online (Sandbox Code Playgroud)
我称之为:
var
SourceBuffer : PChar;
MyFile: TFileStream;
....
SourceBuffer := StrAlloc(1024);
MyFile := TFileStream.Create('MyFile.txt',fmCreate);
WriteString(MyFile,SourceBuffer,'Some Text');
....
Run Code Online (Sandbox Code Playgroud)
这在Delphi 2007中有效,但它在Delphi 2010中给了我很多垃圾字符.我知道这是由于unicode合规性问题,但我不知道如何解决这个问题.
这是我到目前为止所尝试的:
我究竟做错了什么?
请注意下面的编辑以获取更多信息,以及可能的解决方案
我们最近修改了一个大型Delphi应用程序,以使用ADO连接和查询而不是BDE连接和查询.自那次改变以来,表现变得非常糟糕.
我已经分析了应用程序,瓶颈似乎是在实际调用TADOQuery.Open
.换句话说,除了重构应用程序以减少实际使用数据库之外,从代码角度来看,我无法做很多事情来改进这一点.
有没有人有关于如何提高ADO连接的Delphi应用程序性能的建议?我已经尝试了这里给出的两个建议,几乎没有任何影响.
为了了解性能差异,我对相同的大型操作进行了基准测试:
在BDE下:11秒
在ADO下:73秒
在该文章引用的更改之后的ADO下:72秒
我们在客户端 - 服务器环境中使用Oracle后端.本地计算机每个都保持与数据库的单独连接.
对于记录,连接字符串如下所示:
const
c_ADOConnString = 'Provider=OraOLEDB.Oracle.1;Persist Security Info=True;' +
'Extended Properties="plsqlrset=1";' +
'Data Source=DATABASE.DOMAIN.COM;OPTION=35;' +
'User ID=******;Password=*******';
Run Code Online (Sandbox Code Playgroud)
回答zendar提出的问题:
我在Windows Vista和XP上使用Delphi 2007.
后端是Oracle 10g数据库.
如连接字符串所示,我们使用的是OraOLEDB驱动程序.
我的基准测试机器上的MDAC版本是6.0.
编辑:
在BDE下,我们有很多代码如下:
procedure MyBDEProc;
var
qry: TQuery;
begin
//fast under BDE, but slow under ADO!!
qry := TQuery.Create(Self);
try
with qry do begin
Database := g_Database;
Sql.Clear;
Sql.Add('SELECT');
Sql.Add(' FIELD1');
Sql.Add(' ,FIELD2');
Sql.Add(' ,FIELD3');
Sql.Add('FROM');
Sql.Add(' TABLE1');
Sql.Add('WHERE SOME_FIELD …
Run Code Online (Sandbox Code Playgroud) 具体来说,我试图了解SQL语句与普通C风格编程的区别,我似乎无法理解如何做"像这个表中的每个用户ID都有另一列数据等等的东西,运行这个存储程序"在编程中将是一个for循环,你怎么做这样的东西?
或者,对于tableA中contentID为11的每一行,向包含此数据的tableB添加一个新行,并从tableA的行中找到包含contentID为11的userID ...
任何人都在想与编程相比如何理解SQL语句?如果我明白自己的想法,我觉得我可以更好地运用它......
我很好奇用什么工具来构建自己的下一个版本.
例如,Delphi长期以来声称" Delphi是用Delphi编写的 ".
我假设Visual Studio是使用Visual Studio编写的.
什么是其他自己编写的工具示例?
我有一个Windows .exe文件,但它的源代码丢失了.开发人员没有责任离开我们公司.我认为这是一个delphi/pascal程序.开发人员使用了很多库,但我不确定哪些库.有没有一个工具可以告诉我哪些库用于制作这个exe?
嗨,我是Typescript和Javascript的新手,我在创建googlemap实例时遇到了一些问题.
我已经下载了google.maps.d.ts声明文件,并将其导入我的typescript类,就像这样,所有intellisense工作正常等等;
import googleMaps = module("google.maps");
module Mapping {
export class GoogleMap implements IMap {
public name: string;
private map: any;
private options: any;
constructor (mapDiv:Element) {
this.name = "GoogleMap";
this.options = { zoom: 3, MapTypeId: 'terrian' };
this.map = new googleMaps.google.maps.Map(mapDiv, this.options);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试在index.cshtml文件中创建此类时;
<!DOCTYPE html>
<html>
<head><title>TypeScript Mapping</title></head>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js? key=MYKEYGOESHERE&sensor=false"></script>
<script type="text/javascript" src="~/scripts/require.js"></script>
<script type="text/javascript" src="~/typings/Mapping.js"></script>
<script type="text/javascript">
function initialize() {
var mapCanvas = document.getElementById("map");
var googleMap = new Mapping.GoogleMap(mapCanvas);
}
</script> …
Run Code Online (Sandbox Code Playgroud) sql ×5
delphi ×3
oracle ×3
performance ×2
ado ×1
bde ×1
c ×1
database ×1
delphi-2007 ×1
delphi-2010 ×1
exe ×1
google-maps ×1
libraries ×1
mysql ×1
pascal ×1
rowid ×1
typescript ×1
unicode ×1