繁体   English   中英

拥有成千上万行且性能良好的按需加载数据源是否合理?

[英]Is it reasonable to have a load on demand datasoruce with thousands of rows and good performance?

案件

我想要一个允许用户搜索现有项目并在三列中提供匹配项的界面。 但是性能非常重要。 因此,假设数据源是我从中检索姓名,电话号码和电子邮件的人员列表。 我使用Telerik的RadComboBox及其内置的EnableLoadOnDemand(在按键,粘贴等操作时重新加载列表)。

从第一次测试开始,我已经看到性能下降出现在500个数据项标记附近。 对我来说,这根本不是不合理的,因为模式匹配不仅在所有三列中都完成,而且是包含类型的(即,它在字符串中的任何位置都匹配)。 顺便说一下,将搜索模式切换为StartsWith时,我看不到任何明显的性能提升。

RadComboBox

<telerik:RadComboBox runat="server" ID="RadComboBox1" 
                Height="290px" Width="700px" EmptyMessage="Enter your query" EnableVirtualScrolling="False"
                MarkFirstMatch="true" Filter="StartsWith" EnableLoadOnDemand="true"
                HighlightTemplatedItems="true" AutoPostBack="True" EnableTextSelection="true"
                DataSourceID="SqlDataSource1">

                <HeaderTemplate>
                    <ul>
                        <li class="col1">Name</li>
                        <li class="col2">Mobile</li>
                        <li class="col3">E-mail</li>

                    </ul>
                </HeaderTemplate>
                <ItemTemplate>
                    <ul>
                        <li class="col1">
                            <%# DataBinder.Eval(Container.DataItem, "ContactName")%></li>
                        <li class="col2">
                            <%# DataBinder.Eval(Container.DataItem, "Mobile")%></li>
                        <li class="col3">
                            <%# DataBinder.Eval(Container.DataItem, "Email")%></li>


                    </ul>
                </ItemTemplate>

            </telerik:RadComboBox>

我期望用3000条数据行来实现这一目标是否合理? 是的,有什么方法可以优化我的方法吗?

您可以考虑创建自己的过滤器(例如,通过存储首次单击处理程序时获得的数据集,因此以后需要较少的时间来检索数据)并返回少量数据: http://demos.telerik。 com / aspnet-ajax / combobox / examples / populatingwithdata / autocompletesql / defaultcs.aspx 您还可以减少每个请求的项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM