【问题标题】:Select Query Optimization选择查询优化
【发布时间】:2011-04-11 13:12:08
【问题描述】:

我选择了根据条件获取记录的查询

Select * from Employee where EmpStatus=#EmpStatus#

数据库中每个员工的 EmpStatus 为 0 或 1。

EmpID EmpName EmpStatus
***********************
1     Name1   0
2     Name2   0
3     Name4   1
4     Name5   1

当我将 EmpStatus 作为 1 传递时,我应该得到仅包含 3 和 4 的列表。但是如果我将 EmpStatus 作为 0 传递,则应该获取所有 4 条记录。如何使用单个最佳选择查询来完成此操作?

【问题讨论】:

  • 获取四行不应该有性能问题。我怀疑您错过了一些重要的细节,这些细节是优化性能所必需的。例如,有多少行,有多少行 EmpStatus 为 0,有多少行为 1?您是在查询整个表还是另一个查询的结果?您的查询中是否还有其他列在此示例中被省略了?

标签: c# mysql query-optimization ibatis


【解决方案1】:

您可以将 = 更改为 >=:

SELECT col1, col2 -- etc...
FROM Employee
WHERE EmpStatus >= #EmpStatus#

性能最重要的是添加适当的索引。

【讨论】:

  • 好答案。我认为重要的另一件事是避免“SELECT *”。如果您的代码要更改,那么选择所有内容可能会很糟糕,因为 ibatis 将无法映射您的新字段,直到您的结果映射对象中有相同的字段。这可能会导致难以追踪的运行时错误(“我的代码没有更改,但程序现在崩溃了!”添加数据库列后)。
猜你喜欢
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多