我有一个关于Inventoryitem的扩展表,该表具有100个字段。我编写了一个智能搜索以根据过滤条件显示数据。
拥有25.000条以上记录的项目主记录
要获取所有记录,大约需要3分钟。
public PXSelectOrderBy<
FilterResult,
OrderBy<
Asc<FilterResult.inventoryID,
Asc<FilterResult.recordType>>>> records;
[System.SerializableAttribute()]
[PXTable(typeof(InventoryItem.inventoryID),
IsOptional = true)]
public class ItemExtendTable : PXCacheExtension<InventoryItem>
{
}
[PXFilterable]
public PXSelectJoinGroupBy<
INSiteStatus,
LeftJoin<InventoryItem,
On<InventoryItem.inventoryID, Equal<INSiteStatus.inventoryID>>>,
Aggregate<
GroupBy<InventoryItem.inventoryID,
Sum<INSiteStatus.qtyOnHand>>>>
item;
我正在使用以下语句在数据委托中获取页面数据
protected virtual IEnumerable Records()
{
List<object> result = new List<object>();
List<FilterResult> rows = new List<FilterResult>();
PXView select = new PXView(this, true, item.View.BqlSelect);
Int32 totalrow = 0;
Int32 startrow = PXView.StartRow;
result = select.Select(PXView.Currents, PXView.Parameters,
PXView.Searches, PXView.SortColumns, PXView.Descendings,
PXView.Filters, ref startrow, PXView.MaximumRows, ref totalrow);
PXView.StartRow = 0;
foreach (PXResult<INSiteStatus, InventoryItem> res in result)
{
InventoryItem item_rec = res;
ItemExtendTable item_ext = PXCache<InventoryItem>.GetExtension<ItemExtendTable>(item_rec);
FilterResult ret = new FilterResult();
// Fill values
rows.Add(ret);
}
return rows;
}
**
result = select.Select(PXView.Currents, PXView.Parameters,
PXView.Searches, PXView.SortColumns, PXView.Descendings,
PXView.Filters, ref startrow, PXView.MaximumRows, ref totalrow);
**
上面的语句需要3分钟以上的时间来获取数据。
使用扩展表对BQL查询有影响吗?
更新
我已经运行了配置文件,并且为每个项目触发了SQL语句。它触发了25000多个SQL语句。