作为“ 索引是什么以及如何使用它们来优化数据库中的查询? ”的后续操作,我正在试图了解索引,哪些列是好的索引候选? 特别是对于MS SQL数据库? 一些谷歌search后,我已经阅读的一切表明,通常增加和独特的列做了一个很好的索引(像MySQL的auto_increment),我明白这一点,但我使用MS SQL和我使用的主键GUIDs,所以它似乎该索引不会使GUID列受益…
比方说,在employee表中,我在表的emp_name列上创build了一个索引(idx_name)。 我是否需要在select子句中明确指定索引名称,否则会自动用于加快查询速度。 如果需要在select子句中指定,那么在select查询中使用索引的语法是什么?
在性能方面,mysql唯一索引与非唯一索引有什么区别? 让我们说我想要在2列的组合索引,组合是唯一的,但我创build一个非唯一索引。 这会对性能或mysql使用的内存有什么显着的影响吗? 同样的问题,主键和唯一索引是否有区别。
我需要在〜5M行的MySQL表上创build一个索引。 这是一个生产表,如果我运行一个CREATE INDEX语句,我就担心一切的一切 有没有一种方法来创build索引,而不阻塞插入和select? 只是想知道我不停止,创build索引,并重新启动我的系统!
在软件工程中,我们始终创build索引(例如,在数据库中),但是我也听到很多人谈论倒排索引。 两者之间有什么根本的不同吗? 他们听起来像是一样的东西。
我面对以下,我不知道什么是最好的做法。 考虑下面的表(它会变大): ID PK | giver_id FK | recipient_id FK | date 我使用InnoDB,据我所知,它为两个外键列自动创build索引。 但是,我也会做很多的查询,我需要匹配一个特定的组合: SELECT…WHERE giver_id = x AND recipient_id = t 。 每个这样的组合在表格中将是唯一的。 在这些列上添加两列索引是否有任何好处,或者理论上两个单独索引是否足够/相同?
我不小心添加了一个新的filter到我的GAE应用程序。 索引的状态现在是“服务” – 但是我根本不需要这个索引,我想删除它。 我怎样才能做到这一点?
我想重新命名一个索引。 我已经查看了alter table文档,但是我找不到简单地重命名索引的语法。 当通过MySQL GUI执行时,会删除索引,并创build一个新的索引。 虽然这工作,我想避免重build整个索引只是为了改变索引的名称。 [附加信息] 在alter table文档中说明 只能修改表格元数据而不能修改表格数据的修改可以通过修改表格的.frm文件而不是触及表格内容来立即完成。 以下更改是可以通过这种方式进行的快速更改: * Renaming a column or index. 但是,当我尝试通过编辑.frm文件(在testing数据库上)重命名索引并重新启动服务器时,现在在尝试列出列时在UI中声明“无法获取列”一个查询,它返回错误“未知的表引擎”“。 .frm文件有很多二进制内容。 有没有一个好的工具来编辑二进制信息。
由于“ Table Scan和“ Clustered Index Scan扫描表中的所有logging,为什么聚簇索引扫描会更好? 举个例子 – 当有很多logging时,下面的性能差别是什么? declare @temp table( SomeColumn varchar(50) ) insert into @temp select 'SomeVal' select * from @temp —————————– declare @temp table( RowID int not null identity(1,1) primary key, SomeColumn varchar(50) ) insert into @temp select 'SomeVal' select * from @temp
如果为了参数的缘故,我想要Python中10个长度向量的最后五个元素,那么我可以在范围索引中使用“ – ”运算符: >>> x = range(10) >>> x [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> x[-5:] [5, 6, 7, 8, 9] >>> 在R中做这件事的最好方法是什么? 有没有比我现在使用length()函数更简洁的方法? > x <- 0:9 > x [1] 0 1 2 3 4 5 6 7 8 9 > x[(length(x) – 4):length(x)] [1] 5 6 7 8 […]