【发布时间】:2013-04-23 02:00:17
【问题描述】:
我有一个存储路线的 SQL 数据库。我将路线信息存储在一个表中,将坐标存储在另一个表中。
如果您对所有路线求和,现在我有大约 40 条路线,坐标为 50k。
我使用以下 LINQ 代码来获取数据
var query = (from b in db.routes select new {
name = b.name,
id = b.route_id,
coor = b.coordinates.Select(c => new
{
seq = c.sequence,
lat = c.position.Latitude,
lon = c.position.Longitude
}) });
这个查询需要 4.5 秒来执行,我觉得这很好。
我是索引新手,现在两个主键都是聚集索引,而主键是我使用以下 SQL 命令创建的普通(??)索引:
CREATE INDEX IX_route on [db].[coordinates] (route_id)
我的数据库是不是很慢或者对于这么大的数据量这是正常的吗?
【问题讨论】:
-
如果连续快速运行两次查询,第二次是否仍然很慢?
-
能否请您显示生成的 SQL 的结果?我猜,它没有优化,但它可以帮助重写 linq 查询
-
使用 SQL Profiler 查看生成的 SQL,在 SSMS 中运行它并选择显示实际执行计划启用。 SSMS 将建议应该提高性能的索引。 weblogs.sqlteam.com/mladenp/archive/2008/12/29/…
-
如果此查询是其通常用例的类型,那么
coordinates表上的route_id应该是聚集索引而不是其主键。
标签: sql performance linq indexing