快速查询数据
QuikFind和QuikSelect是Foxtable 2026新增的方法。
QuikFind和QuikSelect的查询速度是Find和Select的6到8倍,适合需要持续进行大量(万级)查找的场合。
QuikFind和Find方法一样,只能返回一条符合条件的行,而QuikSelect则返回一个DataRow集合,包括所有符合条件的行。
QuikFind和QuikSelect需要SetQuikKey配合使用,使用步骤为:
1、在查找前用SetQuikKey设置快速查找列:
DataTables("表名").SetQuikKey("查找列名")
可以设置多个查找列,例如:
DataTables("表名").SetQuikKey("查找列1,查找列2")
或:
DataTables("表名").SetQuikKey("查找列1","查找列2")
或:
DataTables("表名").SetQuikKey({"查找列1","查找列2"})
通常在项目事件AfterOpenProject设置,不要反复设置,设置一次即可,除非需要更改查找列。
2、之后就可以快速查找数据了,例如:
Dim dr As DataRow = DataTables("表名").QuikFind("查询值")
Dim drs As List(of DataRow) = DataTables("表名").QuikSelect("查询值")
如果设置了多个查找列,就需要指定做个查询值,例如:
Dim dr As DataRow = DataTables("表名").QuikFind("查询值1","查询值2")
Dim dr As List(of DataRow) = DataTables("表名").QuikSelect("查询值1","查询值2")
可以用数组指定多个查找值,例如:
Dim dr As DataRow = DataTables("表名").QuikFind({"查询值1","查询值2"})
Dim dr As List(of DataRow) = DataTables("表名").QuikSelect({"查询值1","查询值2"})
下面是一个测试示例,里头有两个文件,分别用QuikFind和Find来完成10万次查找任务,大家可以下载
比较测试一下:
http://www.foxtable.com/samples/quikfind.zip
当然QuikFind和QuikSelect是没有办法代替Find和Select的,因为后者用的是表达式,很灵活,而前者只能用于等于查找。