首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL中使用索引

如何在SQL中使用索引
EN

Stack Overflow用户
提问于 2009-09-20 17:48:51
回答 6查看 210关注 0票数 0

我正在构建一个相当大的数据库-它有大约690万条记录。

一个简单的select需要6-7秒,所以我现在正在优化和研究其他选项。

一个显而易见的方法是创建一个或两个索引。

示例:

在"TABLE_NAME“(COLUMN_NAME)上创建索引"INDEX_NAME”

这很有效。

但是,我无法获得有效的sql语法来在select语句中使用索引。一个假设你可以使用"select index_name from table_name",好吧,至少我这样做了:)但是它看起来是无效的,我在网上找不到一个例子,这要么意味着我来自完全错误的角度,要么没有人记录它……

任何关于如何使用索引的帮助都将不胜感激!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-09-20 18:02:48

您不需要显式指定希望数据库使用的索引。数据库优化器将查看它对可用索引和算法的了解,以回答您的查询,并(希望)为手头的任务选择最佳计划。

因此,您只需像以前一样从表中进行选择;数据库将自动“做正确的事情”。

因为即使对于最有经验的开发人员来说,优化器也有点不透明,所以在开发查询时,查看为它们生成的“执行计划”是很重要的。您可以使用数据库风格的EXPLAIN命令查看计划。

建立正确的索引是一门艺术。下面是一个最近的示例,它介绍了哪些算法和索引组合最适合MySQL数据库上的某些类型的selects:http://www.mysqlperformanceblog.com/2009/09/19/multi-column-indexes-vs-index-merge/这可能太高级了,现在对您没有什么用处,但请通读一遍,以便了解优化器试图为您解决的问题。

票数 4
EN

Stack Overflow用户

发布于 2009-09-20 17:59:01

SQL Server将尝试确定哪个索引最适合您编写的查询。这将在他对各种指数的统计数据的帮助下完成。(每个表可以有多个索引,但应限制创建的索引数)

你也可以创建一个叫做覆盖索引的东西。这是一个索引,其中包含查询的所有字段。这使得SQL Server只能查询索引,而不能查询它所索引的表。

您还可以选择在查询中创建索引提示,以强制sql server优先于另一个索引,但不应使用该选项,而应使索引的统计信息保持最新。

希望这能有所帮助

票数 2
EN

Stack Overflow用户

发布于 2009-09-20 18:09:40

如果您使用的是MySQL,您可以指定使用或不使用哪个索引。

代码语言:javascript
复制
SELECT * FROM table1 USE INDEX (col1_index,col2_index)
  WHERE col1=1 AND col2=2 AND col3=3;

SELECT * FROM table1 IGNORE INDEX (col3_index)
  WHERE col1=1 AND col2=2 AND col3=3;

你可以在这里找到更多信息:http://dev.mysql.com/doc/refman/5.1/en/index-hints.html

沃伦·布莱恩·诺罗尼亚

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1451562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档