我在下面有许多数据库表。我想在 datagridview 中显示每个用户及其相关的“通过”字段值。
当前查询是 1. 从用户表加载所有用户 2. 添加到 datagridview 的用户 3. 循环 datagridview - 对于每个用户查询 i) ExamGeography, ii) ExamMath, iii) ExamSpanish
foreach (DataGridViewRow dgvRow in resultsDataGridView.Rows)
{
dgvRow.Cells["geographyCol"].Value = 'query result from ExamGeography i.e. SELECT Pass FROM ExamGeography WHERE User=@User'
dgvRow.Cells["mathCol"].Value = 'query result from ExamMath i.e. SELECT Pass FROM ExamMath WHERE User=@User'
// ...
}
所以每个用户都会对数据库进行新的调用。尽可能少地调用数据库总是更好吗?而不是多次调用同一张表?什么被认为是最佳实践/最佳性能?
例如,我的查询是否应该是“SELECT Pass FROM ExamGeography”(省略 WHERE 子句)并为所有用户返回?
User Table
User (PK) ----------- Member
User1 Y
User2 Y
User3 N
ExamGeography Table
User (FK) ----------- Pass
User1 Y
User2 Y
User3 Y
ExamMath Table
User (FK) ----------- Pass
User1 N
User2 Y
User3 Y
ExamSpanish Table
User (FK) ----------- Pass
User1 Y
User2 N
User3 N
DataGridView Display
Username Geography Math Spanish
User1 Y N Y
User2 Y Y N
User3 Y Y N