首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用索引而不是唯一的索引有写性能的改善吗?

使用索引而不是唯一的索引有写性能的改善吗?
EN

Stack Overflow用户
提问于 2018-03-02 08:04:33
回答 2查看 163关注 0票数 2

This描述了不同的索引:

键或索引指的是正常的非唯一索引。允许索引的非不同值,因此索引可以在索引的所有列中包含具有相同值的行。这些索引不对数据强制执行任何限制,因此它们仅用于确保某些查询能够快速运行。 唯一是指索引的所有行都必须是唯一的索引。也就是说,对于此索引中的所有列,同一行可能没有与另一行相同的非空值。除了用于加速查询之外,还可以使用唯一索引来强制限制数据,因为数据库系统不允许在插入或更新数据时破坏这一不同的值规则。

我理解应用程序逻辑的好处(您不需要唯一性检查),但是性能也有改善吗?具体来说,使用索引而不是唯一的写入速度有多快?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-02 08:11:07

UNIQUE KEY是一个约束,当您要强制执行该约束时,您可以使用它。

KEY是一个索引,您可以选择它来提高某些查询的效率。

插入到具有任一类型索引的表中的性能实际上是相同的。也就是说,如果有的话,这种差别太小了,不值得为了性能而选择另一种。

选择支持约束的索引类型。仅当您希望强制执行唯一性时,才使用UNIQUE KEY。否则使用KEY

你的问题就像问,“哪一种更快,摩托车还是快艇?”他们是在不同的情况下使用,所以判断他们的速度不是重点。

票数 3
EN

Stack Overflow用户

发布于 2018-03-07 18:15:39

插入

插入一行时,立即检查所有唯一的键(PRIMARYUNIQUE)是否有重复的键。如果有必要,这将使您在INSERT上得到一个错误。非唯一INDEXes的更新会延迟(有关讨论,请参阅“更改缓冲”)。工作将在后台完成,这样您的INSERT就不会等待它了。

因此,UNIQUE中插入的开销很小。但是,正如已经指出的,如果您需要唯一性约束,那么就使用它。

选择

任何类型的索引(PRIMARYUNIQUEINDEX)都可以用来加速SELECT。大多数情况下,索引的类型是相同的。但是,使用PRIMARYUNIQUE,优化器可以知道只有一个(或可能为零)行与给定值匹配,因此它可以获取一行,然后退出。对于非唯一索引,可能有多行,因此它继续扫描索引,检查更多行。此扫描在查看第一个不匹配行后停止。因此,非唯一索引与唯一索引相比,有一个很小(非常小)的开销。

底线

性能问题不像语义那么重要(唯一性约束与非唯一性约束)。

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

https://stackoverflow.com/questions/49072904

复制
相关文章
Ruby On Rails 4 hello world,Ruby On Rails上手
有机会再试一试Rails了,仅仅是原来接触的是2,如今已然变成了4,似乎如今的安装比原来会快些。。
全栈程序员站长
2022/07/12
2.5K0
Ruby On Rails 4 hello world,Ruby On Rails上手
使用rvm在Mac中安装ruby和rails
MacOS默认安装的是ruby 1.8.7,如果你想使用ruby 1.9.2的话,除了在官网下载源码编译安装外,可以使用rvm来协助安装。
EltonZheng
2021/01/22
3.2K0
Ruby on Rails 基础(11)
启动浏览器,可以进行访问 ---- 命令汇总 gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 curl -sSL https://get.rvm.io | bash -s stable rvm list known rvm list rvm install 2.3 ruby -v gem -v sqlite3 --version gem source -l time
franket
2021/11/25
1K0
Ruby on Rails 基础(1)
这两条编码哲学可以算是历代猴子们的智慧结晶,核心目标只有一个,最大化的减少代码规模,明确核心逻辑,而这样的好处是多多的(编码效率高,Debug也快)
franket
2021/11/25
1.2K0
Ruby on Rails 基础(8)
文件/文件夹 作用 app/ 存放程序的控制器、模型、视图、帮助方法、邮件和静态资源文件。本文主要关注的是这个文件夹。 bin/ 存放运行程序的 rails 脚本,以及其他用来部署或运行程序的脚本。 config/ 设置程序的路由,数据库等。详情参阅 “设置 Rails 程序” 一文。 config.ru 基于 Rack 服务器的程序设置,用来启动程序。 db/ 存放当前数据库的模式,以及数据库迁移文件。 Gemfile, Gemfile.lock 这两个文件用来指定程序所需的 gem 依赖件,用于 Bun
franket
2021/11/25
1.9K0
如何在Ubuntu 18.04上使用RVM安装Ruby on Rails
Ruby on Rails是一个流行的Web应用程序框架,旨在帮助您开发成功的项目,同时编写更少的代码。为了使Web开发变得有趣并且受到强大社区的支持,Ruby on Rails是一个可以免费使用的开源软件,并且欢迎各位用户提出建议以使其更好。
独钓寒江雪_Ly
2018/10/10
8.9K0
Ruby on Rails 基础(2)
RVM (Ruby Version Manager) 是一个 CLI 工具,可以用来对 ruby 的多个版本进行安装,隔离和管理
franket
2021/11/25
8490
Ruby on Rails 基础(1)
这两条编码哲学可以算是历代猴子们的智慧结晶,核心目标只有一个,最大化的减少代码规模,明确核心逻辑,而这样的好处是多多的(编码效率高,Debug也快)
franket
2021/11/25
1.2K0
Ruby on Rails 基础(3)
查看可用ruby版本 [root@h202 ruby]# rvm list known -bash: rvm: command not found [root@h202 ruby]# su - root [root@h202 ~]# cd ruby/ [root@h202 ruby]# rvm list known # MRI Rubies [ruby-]1.8.6[-p420] [ruby-]1.8.7[-head] # security released on head [ruby-]1.9.1[-p
franket
2021/11/25
1.2K0
Ruby on Rails 基础(4)
安装Rails 检查环境 检查以下三个软件,确保已经安装 [root@h202 ruby]# ruby -v ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux] [root@h202 ruby]# gem -v 2.5.1 [root@h202 ruby]# sqlite3 --version 3.6.20 [root@h202 ruby]# ---- 替换安装源 如果不替换源,会很慢,或者根本没法获取包,因为有墙 [root@h202 rub
franket
2021/11/25
1.2K0
如何在Ubuntu 18.04上使用rbenv安装Ruby on Rails
Ruby on Rails是创建网站和Web应用程序的开发人员最受欢迎的应用程序堆栈之一。Ruby编程语言与Rails开发框架相结合,使应用程序开发变得简单。
司徒永哥
2018/10/10
6.4K0
如何在Ubuntu 14.04上使用PostgreSQL和Ruby on Rails应用程序
Ruby on Rails使用sqlite3作为其默认数据库,在许多情况下效果很好,但可能不适合您的应用程序。如果您的应用程序需要客户端/服务器SQL数据库(如PostgreSQL或MySQL)提供的可伸缩性,集中化和控制(或任何其他功能),则需要执行一些其他步骤才能启动并运行它。
温浪
2018/10/22
3.4K0
Ruby on Rails 基础(7)
Note: bundle install 过程中有一个警告,让我们不要使用 root,这样会让其它用户无法操作此应用,其实还有一定安全隐患,这里为图方便,只为了解功能就不去讲究这些了,生产环境下要非常注意 Don’t run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as root will break this application for all non-root user
franket
2021/11/25
1K0
Ruby on Rails 基础(9)
报错:There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
franket
2021/11/25
9440
Ruby on Rails 基础(6)
没有创建成功,但是反馈结果却是成功 (说明这是一批命令,最后一个反馈结果正常),并且生成一个文件目录
franket
2021/11/25
1.7K0
Ruby on Rails 基础(1)
这两条编码哲学可以算是历代猴子们的智慧结晶,核心目标只有一个,最大化的减少代码规模,明确核心逻辑,而这样的好处是多多的(编码效率高,Debug也快)
franket
2021/11/25
6410
如何在Ubuntu 14.04上使用MySQL和Ruby on Rails应用程序
Ruby on Rails使用sqlite3作为其默认数据库,在许多情况下效果很好,但可能不适合您的应用程序。如果您的应用程序需要客户端/服务器SQL数据库(如PostgreSQL或MySQL)的可伸缩性,集中化和控制(或任何其他功能),则需要执行一些额外的步骤才能启动并运行它。
信姜缘
2018/10/22
4.9K0
RoR:Ruby On Rails 的 Web Service
3.c:\flexstore\ruby script/generate model product
用户3135539
2018/09/12
9430
如何在Debian 8上使用RVM安装Ruby on Rails
Ruby on Rails是创建网站和Web应用程序的开发人员最受欢迎的应用程序框架之一。Ruby编程语言与Rails开发框架相结合,使应用程序开发变得简单。
好烟
2018/07/26
5.1K0
RubyMine 2023 Ruby和Rails集成开发环境
RubyMine 2023.1 包含 Rails 7 和 Ruby 3.2 支持、新 UI 更新、更快的代码补全、更少的内存消耗、WSL 上改进的 gem 同步、更便捷的导航、在 RSpec 中使用共享上下文和示例的功能,以及增强的 Docker 集成。
用户10121095
2023/04/02
1.3K0

相似问题

使用Ruby、Rails和.gsub删除双引号

10

从rails中的ruby循环中删除双引号

12

删除ruby中哈希值中的双引号

11

如何在ruby on rails中通过查询添加和删除关系

20

如何删除字符串ruby on rails中的双引号?

19
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文