- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近深入研究了 Delphi 的世界,对于我当前的迷你项目,我通过 SQL 查询获取数据,然后使用过滤器属性来准确显示我想要的内容。
我错误地发现了过滤器,现在更喜欢它,而不是对数据库进行多个连接或调用。例如,我返回一个可能拥有许多汽车的人物对象,该应用程序有一个复选框,根据选择的复选框,它将更新过滤器以仅显示蓝色或粉色或其他颜色的汽车。
据我了解,过滤器的工作方式类似于 where 子句,但作用于从初始查询返回的数据集。所以,我的问题是:以这种方式处理小数据集时,使用过滤器属性是否更快,我完全错误地认为返回、存储数据集,然后将过滤器应用于该数据集,而不是不断更新?
我在网上查看过,资源确实让我相信它更有效,但我仍然不确定。感谢您的帮助。
最佳答案
数据集上的过滤器确实像 WHERE
子句一样工作(或至少表现得),并且在某些情况下可以非常快。
依赖过滤器的问题是:
网络流量增加。您将大量不需要的数据从服务器移动到客户端,因为您只是将其过滤掉。
过滤器逐行应用于数据。服务器可以将 WHERE
子句优化为全部(或至少部分)基于现有索引,而客户端没有可用的索引。
增加了客户端的内存和 CPU 使用量,以维护内存中未使用的数据并处理要过滤的行。
客户端应用看不到其他用户或进程更新的数据,因为您现在正在处理本地内存中的所有数据,而不是从服务器刷新。
IMO,对除微不足道的数据集之外的所有数据集使用过滤器并不是一个好的选择,如果数据量那么小,您可以将整个数据集移动到 TClientDataSet
中并将其保留在无论如何都要记住自己。与正在考虑的所有其他优化一样,正确的答案取决于应用程序的需求和相关的实际数据,并且应该使用该标准进行基准测试,以确定实际上更好的解决方案。
关于sql - DBGrid 过滤器,德尔福。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25980062/
如何使所有网格在我的表单上看起来都相同?我想实现必须应用于项目的所有网格的备用行颜色。是否可以不为每个网格添加相同的 DrawColumnCell 事件代码?我想避免为每个网格添加相同的代码。我的项目
好的,我正在使用 DBGrid 来显示数据库中的数据。 数据库包含一个包含 11 列的表。第 4 列称为客户名称,包含客户的姓名。 我想要一个搜索框(类似于谷歌搜索栏),我可以在其中写下我想要的客户名
我从 TDBGrid 继承了一个类,我希望它能够记住特定用户对列顺序和列宽所做的任何修改。而且,我希望能够完全在网格本身内做到这一点。我不想将代码附加到 TDataSet,因为这个网格在我的应用程序中
好吧,我对 DBGrid 垂直滚动有疑问。当我用鼠标滚轮或垂直滚动条垂直滚动它时,它会上下移动选定的行。我想让它滚动的不是选定的行,而是整个网格。就像它在 Microsoft Excel 中工作一
我遇到了 Delphi 的 DBGrid 最奇怪的问题。 我注意到 有时 ,我的意思是,当我将行加载到 delphi DBGrid 中时(它是完全随机的),网格不显示数据。 相反,它显示了几个压缩行,
我有一个带有查询、数据集、可编辑 dbgrid 和 updatesql 组件的表单。当我需要保存在 dbgrid 中所做的更改时,我调用此过程: procedure TEditCardDetailFo
我在 BDS 2006 中使用了 DBGrid。它有 6 列,在运行时填充。在mysql数据库中,一列的数据类型是char(150)。因为从数据库检索到 dbgrid 时,它会占用长度,并且列会随着滚
我有一个条目网格,用户可以单击以对流程进行多项选择。根据第一个选定行的值,某些条目将无效。 我知道DBGrid.SelectedRows.CurrentRowSelected,但我找不到合适的地方来检
我得到了: ADOTable1(代码人为整数,姓名人为字符串) DataSource1(日期集是ADOTable1) DBGrid1(连接到DataSource1,Options-dgRowSelec
我想扩展 DbGrid 功能以在奇数行和偶数行上添加颜色。所以我写了这个 procedure TGridx.DrawCell(ACol, ARow: Longint; ARect: TRect; AS
我正在使用 Delphi 10.2.3 并且想要更改 DBgrid 的背景颜色。例如,我有一个文本列和一个整数列。根据文本,如果值非零,我想更改整数单元格(同一行中)的颜色。 我得到了一些想法 how
我需要获取 Delphi 中 DBGrid 的选定单元格的值。 我不知道该怎么做。我尝试了 dbGrid 的 OnMouseMove pt : TGridCoord; ... pt:=dbGrid.M
{*----------------------------------------------------------------------------- Unit Name: TopFormU
我的问题是如何在 Delphi 7 中的 dbgrid 中设置一个带有复选框项目的列。 提前致谢。 最佳答案 经我测试,最简单、最完整的方法如下: 在单元的私有(private)部分中,声明一个用于保
我正在制作一个保存订单和打印发票的应用程序。我的表单上有一些标签、编辑、tmemos、按钮、数据源、adotable、弹出菜单和 dbgrid。 当我构建程序并向下滚动 dbgrid 滚动条时,它会在
我有一个 TDBGrid。它有效,但显示的列非常大。 如何设置“自动修复列宽”? 最佳答案 所需的列宽取决于网格 Canvas 的设置和每个字段的显示文本的最大长度。 procedure FitGri
我需要格式化 DBGrid 中的值,以某种格式显示,例如 '#,##0.00'。知道如何做到这一点吗? 问候,彼得 最佳答案 您可以使用DisplayFormat要格式化的字段的属性。 检查此示例 T
是否可以在 Delphi (xe) 中自动换行 DBgrid 单元格(高度)?我有一个 dbgrid,其中包含具有固定列宽的多列,并且某些列最多有 100 个字符,我需要它们在不更改列宽的情况下适合适
有没有办法隐藏 DBGrid 上的标题行和指示器列?我找不到任何此类属性(property)。我可以通过编程来完成吗? 最佳答案 关闭(设置为 False)对象检查器中的 Options.dgTitl
使用 TImage 列表中的图像在 DBGrid 中的数据单元格上绘制字形时出现问题: 我将“复选标记”的 bmp 图像代替特定数据单元格中的文本“完成”。它有效,但细胞中未被图像覆盖的部分始终存在黑
我是一名优秀的程序员,十分优秀!