Sql索引与全表扫描

发布于 2024-10-14 14:56:05 字数 78 浏览 3 评论 0原文

在编写复杂的 SQL 查询时,我们如何确保使用正确的索引并避免全表扫描?我通过确保只加入具有索引(主键、唯一键等)的列来做到这一点。这够了吗?

While writing complex SQL queries, how do we ensure that we are using proper indexes and avoiding full table scans? I do it by making sure I only join on columns that have indexes(primary key, unique key etc). Is this enough?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

木緿 2024-10-21 14:56:05

向数据库询问查询的执行计划,然后从那里继续。

不要忘记对 where 子句中出现的列也建立索引。

Ask the database for the execution plan for your query, and proceed from there.

Don't forget to index the columns that appear in your where clause as well.

零時差 2024-10-21 14:56:05

查看查询的执行计划,了解查询优化器如何认为必须检索内容。该计划通常基于表的统计信息、索引的选择性和连接的顺序。请注意,优化器可以决定执行全表扫描比索引查找“更便宜”。

其他需要注意的事项:

  • 如果可能的话,避免子查询。

  • 尽量减少“OR”谓词的使用
    在 where 子句中

Look at the execution plan of the query to see how the query optimizer thinks things must be retrieved. The plan is generally based on the statistics on the tables, the selectivity of the indices and the order of the joins. Note that the optimizer can decide that performing a full table scan is 'cheaper' than index lookup.

other Things to look for:

  • avoid subqueries if possible.

  • minimize the use of 'OR'-predicates
    in the where clause

時窥 2024-10-21 14:56:05

很难说什么是最好的索引,因为根据情况有不同的策略。关于索引,您现在仍然应该做一些有趣的事情。

  1. 索引有时会提高 select 语句的性能,但总是会降低插入和更新的性能。
  2. 对于索引表,没有必要将其作为某些字段的键。此外,现实生活中的索引几乎总是包含多个字段。
  3. 如果您的性能令人满意,请不要为“未来目的”创建任何索引。即使您根本没有索引。
  4. 在调整索引时始终尝试分析执行计划。不要害怕尝试。

      +
  5. 表扫描并不总是坏事。

这就是我的全部。

It is hard to say what is the best indexing because there are different strategies depend on situation. Still there are coupe things you should now about indexes.

  1. Index SOMETIMES increase performance on select statement and ALWAYS decrease performance on insert and update.
  2. To index table it is not necessary to make it as key on certain field. Also, real life indexes almost always include several fields.
  3. Don't create any indexes for "future purposes" if your performance is satisfactory. Even if you don't have indexes at all.
  4. Always try to analyze execution plan when tuning indexes. Don't be afraid to experiment.

      +
  5. Table scan is not always bad thing.

That is all from me.

傲性难收 2024-10-21 14:56:05

使用数据库优化顾问(SQL Server)来分析您的查询。它将建议添加必要的索引以调整查询性能

Use Database Tuning Advisor(SQL Server) to analyse your query. It will suggest necessary indexes to add to tune your query performance

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文