如何优化sql数据库中两个表的100万个条目的排序和连接?

时间:2016-06-22 04:55:04

标签: sql sql-server performance

表格为employeeemployee_info

员工包含:

  1. EMP_ID
  2. EMP_NAME
  3. 列表项
  4. employee_name包含:

    1. emp_address
    2. EMP_ID
    3. emp_telephone

    4. 列出项目

    5. 这两个表都包含大约100万个条目。

      加入和排序这些表的最快的方法是什么?

      是否有可以与sql分开使用的技术?

1 个答案:

答案 0 :(得分:4)

  

加入和排序这些表的最快方法是什么?

如果您按emp_id ...

排序

emp_id索引两个表格。这将允许合并连接,这是迄今为止最快的连接。

对于employee_name,请确保您的索引涵盖了您想要的所有列。否则,您必须为基础表支付昂贵的查找联接费用。

CREATE INDEX IX_employee_name_By_Id ON employee_name (emp_id) INCLUDE (emp_address, emp_telephone)

如果您想按其他列排序

现在变得艰难。上面的指数方案可能有效。或者您可能会发现,通过索引一个表的排序列,另一个表上的连接列可能更快。

再次确保您的两个索引都涵盖了您关注的所有字段。

  

是否有可以与sql分开使用的技术?

是的,但我无法想象为什么你会愿意接受性能上的提升,更不用说复杂性了。

请记住,SQL不是“真正的代码”。它更像是一个DSL,可以说明你想要发生什么而不说明它应该如何发生。您的数据库根据许多因素确定要使用的实际算法,例如表大小,索引,值分布(即统计信息)等。作为程序员,您通常没有选择比数据库更好的解决方案所需的信息想出来了。

更多信息:http://use-the-index-luke.com/