C# 把它取下来。然后从FirstLetter='A'的表中选择*
或者创建一个包含a-Z行的查找表,并在manufacturer表中设置外键。同样,您可能需要一个触发器来更新此信息。然后可以将查找表内部联接到制造商表C# 把它取下来。然后从FirstLetter='A'的表中选择*,c#,sql,performance,C#,Sql,Performance,或者创建一个包含a-Z行的查找表,并在manufacturer表中设置外键。同样,您可能需要一个触发器来更新此信息。然后可以将查找表内部联接到制造商表 然后,不要在页面中放置26个数据集,而是有一个链接列表(a-Z),一次选择并显示每个数据集。这对我来说似乎很脏,但您可以创建一个首字母字符列并触发来填充它。将制造商名称的第一个字母存储在该列中,并为其编制索引。然后从FirstLetter='A'的表中选择* 或者创建一个包含a-Z行的查找表,并在manufacturer表中设置外键。同样,您可能
然后,不要在页面中放置26个数据集,而是有一个链接列表(a-Z),一次选择并显示每个数据集。这对我来说似乎很脏,但您可以创建一个首字母字符列并触发来填充它。将制造商名称的第一个字母存储在该列中,并为其编制索引。然后从FirstLetter='A'的表中选择* 或者创建一个包含a-Z行的查找表,并在manufacturer表中设置外键。同样,您可能需要一个触发器来更新此信息。然后可以将查找表内部联接到制造商表
然后,不要在页面中放置26个数据集,而是有一个链接列表(a-Z),可以一次选择并显示每个数据集。如果我没看错的话,您是在查询每个制造商,以获得构建链接所需的“不同字段”。如果是这样的话,那就是你的问题,而不是26个字母顺序的查询(尽管这没有帮助) 在这种情况下,更快的方法是执行以下查询:
SELECT manufacturer_name, manufacturer_id, different_field
FROM manufacturers m
INNER JOIN different_field_table d
ON m.manufacturer_id = d.manufacturer_id
ORDER BY manufacturer_name
在服务器代码中,像往常一样循环记录。如果需要,请在制造商名称的第一个字母更改时发出标题
对于附加速度:
- 将其放入存储过程中
- 在
制造商id
上索引不同的\u字段\u表
如果我没看错的话,您正在查询每个制造商以获得构建链接所需的“不同字段”。如果是这样的话,那就是你的问题,而不是26个字母顺序的查询(尽管这没有帮助)
在这种情况下,更快的方法是执行以下查询:
SELECT manufacturer_name, manufacturer_id, different_field
FROM manufacturers m
INNER JOIN different_field_table d
ON m.manufacturer_id = d.manufacturer_id
ORDER BY manufacturer_name
在服务器代码中,像往常一样循环记录。如果需要,请在制造商名称的第一个字母更改时发出标题
对于附加速度:
- 将其放入存储过程中
- 在
制造商id
上索引不同的\u字段\u表
你能发布你当前的代码/表结构吗?你能发布你当前的代码/表结构吗?为什么这需要一个存储过程?@Marcelo:存储过程,所有生活问题的原因和解决方案。哦,等等,那是酒精!如果您的存储过程最终执行26个单独的查询,那么它的效率仍然比执行一个大查询要低得多…@Marcelo,@Thorarin:我对OP意图的解释是执行26个稍微不同的SELECT
语句,这就是为什么他没有在一个语句中完成所有操作并将其拆分为代码。一个查询肯定更高效,但如果问题是要尽可能快地执行26条语句,我宁愿使用存储过程而不是26个代码调用。为什么这就需要存储过程?@Marcelo:storageprocedures,生命中所有问题的起因和解决方案。哦,等等,那是酒精!如果您的存储过程最终执行26个单独的查询,那么它的效率仍然比执行一个大查询要低得多…@Marcelo,@Thorarin:我对OP意图的解释是执行26个稍微不同的SELECT
语句,这就是为什么他没有在一个语句中完成所有操作并将其拆分为代码。一个查询肯定更有效,但如果问题是要尽可能快地执行26条语句,我宁愿使用存储过程,而不是26个来自代码的调用。@Marcelo:我假设OP只是为现有的制造商创建链接,因此可能没有以X
开头的链接,例如,在这种情况下,代码中的拆分是有意义的。。。一旦数据库按字母表对它们进行排序,就很容易做到。@OrbMan,这仍然不能保证获取所有内容。您的索引页可以使用选择不同的SUBSTR(name,1,1)
,这比获取所有内容要快得多。是的,我在回答中提出了这一点。@Marcelo:我假设OP只是为现有的制造商创建链接,因此可能没有以X
开头的链接。例如,在这种情况下,在代码中拆分是有意义的。。。一旦数据库按字母表对它们进行排序,就很容易做到。@OrbMan,这仍然不能保证获取所有内容。您的索引页可以使用选择不同的SUBSTR(name,1,1)
,这比获取所有内容快得多。是的,我在回答中提出了这一点。为什么这是一个糟糕的设计?基于制造商ID或URL字段构建超链接对我来说似乎非常有效:PWhy这会是一个糟糕的设计吗?基于制造商ID或URL字段(例如)构建超链接对我来说似乎非常有效:p尝试对任何包含单词DataTable
的内容进行否决投票。我会尽力抵制:)@Thorarin:我听到了-我不想推广那种查询数据的方法(特别是使用具有强类型视图的MVC),只需要一个最低的公分母来演示这个概念,而不知道OP的模型层。试图否决任何包含DataTable
一词的内容。我会尽力抵制:)@Thorarin:我听到了-我不想推广这种查询数据的方法(特别是使用具有强类型视图的MVC),只需要一个最低的公分母来演示这个概念,而不知道OP的模型层。存储过程对速度来说是值得怀疑的。。。不过,制造商名称
上的聚集索引可能会有所帮助。取决于它在其他场景中的使用方式。@Throarin-如果他经常调用它,而他的实际查询更复杂(这很可能),那么将代码放入存储过程可能会有所帮助,但不会有什么坏处。存储过程的速度是否值得怀疑。。。制造商名称上的聚集索引可以是he
SELECT manufacturer_name, manufacturer_id, different_field
FROM manufacturers m
INNER JOIN different_field_table d
ON m.manufacturer_id = d.manufacturer_id
ORDER BY manufacturer_name