如何解决加载大型 SQL 表的最快方法
我正在制作一个向用户显示数据的 ASP.NET 网站。它查询 sql 数据库以获取该数据,然后将其显示在浏览器中。这些表通常有 100 万行以上,加载需要一些时间。而不是用户必须等待那么长时间才能查看页面,我希望页面加载,然后在加载数据时将数据添加到页面中。我可以用 SignalR 实现这一点,但我的问题是:
在C#中,有没有办法说“select * from tableName”,但是让它一一返回行,这是加载数据的最快方式吗?
解决方法
完成此操作的最简单方法可能是创建一个通过 Ajax 异步调用的服务器端方法,并将其加载到表中。这样加载视图的操作不依赖于表加载,并且表记录将在它们进入时加载。 另外,如果数据变化不是很频繁,可以考虑缓存它,使后续页面加载速度更快。
,SignalR 适用于这种情况,从 db 加载大型数据集时有两点。
- 切勿使用 *,而是为您想要的每个列命名。
- 您可以先获取表中记录的数量,然后根据批量大小进行提取。例如,您在 DB 中有 1000 条记录,您的批次大小为 100。因此您将向 DB 发出 10 次请求以获取所有 1000 个元素。
您可以选择按页面列出,这有助于加载,
<template>
<div>
<input type="text" placeholder="Source client" v-model="query" v-on:keyup="autoComplete" @keydown.esc="clearText" class="form-control">
<div class="panel-footer" v-if="results.length">
<ul class="list-group">
<li class="list-group-item" v-for="result in results">
<span> {{ result.name + "-" + result.oid }} </span>
</li>
</ul>
</div>
</div>
</template>
<script>
import axios from 'axios'
export default{
data(){
return {
selected: '',query: '',results: []
}
},methods: {
clearText(){
this.query = ''
},autoComplete(){
this.results = [];
if(this.query.length > 2){
axios.get('/getclientdata',{params: {query: this.query}}).then(response => {
this.results = response.data;
});
}
}
}
}
</script>
如果您可以减少要加载的数据量,那将是最好的,就我而言,我进行了“选择”以仅加载具有特定值的行
string searchString
if (searchString != null)
{
page = 1;
}
else
{
searchString = currentFilter;
}
ViewBag.CurrentFilter = searchString;
int pageSize = 5;
int pageNumber = (page ?? 1);
return View(Users.ToPagedList(pageNumber,pageSize));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。