小编cjm*_*ues的帖子

简单的Firebird查询非常慢

我有一张大约246k记录的表格.它有大约25列,除了一个小blob外都是整数.

如果我在所有字段上查询表

select a.recordid, a.editcount, ect.. from ARTrans a
Run Code Online (Sandbox Code Playgroud)

它在一秒钟内执行.但是,如果我只包括记录ID

select a.recordID from ARTrans a
Run Code Online (Sandbox Code Playgroud)

执行需要20多秒.大部分时间花在计划(自然)上似乎很奇怪,因为在大多数情况下,我有一个关于recordid的索引.

我收集了垃圾,重新创建了索引,删除了索引,在RecordID上只添加了一个索引,但它仍然超级慢.

任何帮助将不胜感激.

编辑提供更多信息:

Firebird:2.5.3.26778

fbclient.dll:2.5.1.26351

数据库中没有其他人,我已将其移至本地.

这是表def

CREATE TABLE ARTRANS
(
  RECORDID Integer NOT NULL,
  EDITCOUNT Smallint,
  CLASSIFICATION Smallint,
  TRANSID Integer,
  DATEENTERED Integer,
  CLIENTID Integer,
  TRANSTYPE Smallint,
  BILLED Smallint,
  FINALIZEID Smallint,
  INVOICEID Integer,
  INVOICENUM Integer,
  INVOICEDATE Integer,
  GROUPID Smallint,
  EXPORTED Char(1),
  TRANSVALUE Decimal(18,4),
  DESCRIPTION Blob sub_type 0,
  POSTPERIOD Smallint,
  LINKEDTRANSID Integer,
  LINKEDINVID Integer,
  LINKEDFUNDSID Integer,
  INFOONLY Smallint,
  NEEDTRANSFER Char(1),
  DESTTRANSID Integer,
  LSTTKREDIT Integer,
  SPELLNGRAMMARCHECKSTATUS …
Run Code Online (Sandbox Code Playgroud)

sql performance firebird firebird2.5

7
推荐指数
1
解决办法
1306
查看次数

dart 中的 json_serializable 枚举值

我是飞镖开发的新手...

我不知道如何使用带有枚举类型的 Json_serializable 包。我的数据库将枚举值作为整数,但看起来 JSON_Serializable 希望该值是枚举名称的字符串表示形式.. IE:

枚举分类 { 无、打开、不活动、关闭、默认、删除、零记录}

数据库将分类作为整数值(4:这是默认值)

从 JSON 加载时出现异常

例外:无效参数:4不是支持的值之一:None、Open、Inactive、Closed、Default、Delete、ZeroRecord

如何强制 JSON_Serializable 将 4 视为“默认”?

dart json-serialization

5
推荐指数
1
解决办法
3347
查看次数

使用带有firebird的anydac(now firedac)脚本的参数获取错误

我无法在没有错误的情况下执行以下脚本..它在delphi中针对firebird数据库运行.

var
  vScript: TADScript;

begin
  vScript := TADScript.Create(nil);
  vScript.Connection := xConnection;
  vScript.Transaction := xTransaction;

  with vScript.Params.Add do
    begin
      Name := 'DEFVAL'; // also tried ':DEFVAL'
      AsInteger  := 1;
    end;

  with vScript.SQLScripts.Add do
    SQL.Text := 'ALTER TABLE "PERSON" add "AGE" INTEGER DEFAULT :DEFVAL';

  vScript.ValidateAll;
  vScript.ExecuteAll;
end
Run Code Online (Sandbox Code Playgroud)

它给出了'令牌未知 - 第1行,第48列',参数(:DEFVAL)位置的错误

我已经尝试先分配sql文本然后调用Params.FindParam,但它不在列表中.这适用于查询.

不使用参数,只包含SQL字符串中的默认值,但此代码用作更大框架工作的一部分,该选项是最后的选择.

delphi firebird anydac firedac

3
推荐指数
1
解决办法
263
查看次数