我有一个SQL Server
2005数据库,我尝试将索引放在适当的字段上,以加快DELETE
具有数百万行(big_table
只有3列)的表中记录的速度,但是现在DELETE
执行时间
更长 !(例如1小时对13分钟)
我与表之间有关系,我过滤依据的列DELETE
在另一个表中。例如
DELETE FROM big_table
WHERE big_table.id_product IN (
SELECT small_table.id_product FROM small_table
WHERE small_table.id_category = 1)
顺便说一句,我也尝试过:
DELETE FROM big_table
WHERE EXISTS
(SELECT 1 FROM small_table
WHERE small_table.id_product = big_table.id_product
AND small_table.id_category = 1)
尽管它看起来比第一个要快一些,但是使用索引仍然要比不使用索引慢得多。
我在这些字段上创建了索引:
big_table.id_product
small_table.id_product
small_table.id_category
我的.ldf文件在期间增长了很多DELETE
。
DELETE
当我在表上有索引时,为什么查询速度变慢? 我以为他们应该跑得更快。
更新
好的,共识似乎是索引会减慢速度,这是DELETE
因为必须更新索引。虽然,我仍然不明白为什么它不能DELETE
一次全部显示所有行,而仅在最后一次更新索引。
我从一些阅读中得到的印象是,DELETE
通过WHERE
更快地搜索子句中的字段,索引可以加快速度。
Odetocode.com说:
“在DELETE和UPDATE命令中搜索记录时,索引与SELECT语句一样工作。”
但是在文章的后面,它说太多的索引会损害性能。
鲍勃 问题的答案:
SELECT
不会运行类似的语句(引发了类型为’System.OutOfMemoryException’的异常)我尝试了以下2个查询:
SELECT * FROM big_table
WHERE big_table.id_product IN (
SELECT small_table.id_product FROM small_table
WHERE small_table.id_category = 1)
SELECT * FROM big_table
INNER JOIN small_table
ON small_table.id_product = big_table.id_product
WHERE small_table.id_category = 1
都运行 25分钟* 后都 失败 ,并显示来自SQL Server 2005的错误消息: *
An error occurred while executing batch. Error message is: Exception of type 'System.OutOfMemoryException' was thrown.
数据库服务器是具有7.5 GB内存的较旧的双核Xeon计算机。这是我的玩具测试数据库:),所以它没有运行其他任何东西。
CREATE
为使索引正常工作后,是否需要对索引进行特殊处理?
索引使查找速度更快-就像书后的索引一样。
更改数据的操作(如DELETE)速度较慢,因为它们涉及操纵索引。在本书的末尾考虑相同的索引。如果添加,删除或更改页面,则还有更多工作要做,因为您还必须更新索引。
我们已经使用jmap在Java 6下运行的大型多服务器应用程序上测量堆大小大约2年了。我们每分钟测量一次。每次测量所用的时间(经过的时间)不到1秒。 我们现在正在Java 7下测试同一个应用程序。现在突然之间,jmap通常需要10秒、20秒,有时甚至更长时间,而且它似乎慢了下来(甚至可能停止!)在那段时间里,JVM。 我们在jmap输出中看到的唯一区别(Java6和Java7之间)是关于有多少字符
问题内容: 它们看起来几乎一样,甚至是语法? 使用什么?或什么时候使用什么? 问题答案: 速度不再是真正活跃的开发。Freemarker是。 根据我的经验,Freemarker也更加灵活。
问题内容: 在我的Rails应用程序中,我具有允许查找与当前登录用户最接近的用户的功能。我为此使用了Geocoder gem。在用户模型中,我具有如下范围: 这非常有效,但是对于大量用户而言却很慢。当我调用此作用域时,它将生成以下sql查询: 我正在尝试为此创建索引,但它们不起作用。我正在尝试以下组合: 我应该如何添加索引以加快此查询的速度? 编辑:我忘记添加我的纬度和经度列是小数。 此查询的AN
主要内容:一、索引概述,1.索引的分类,二、索引的创建,1.创建表时创建索引,2. 在已经存在的表上创建索引,三、删除索引,四、隐藏索引,五、哪些情况下适合创建索引,1.频繁作为 WHERE 查询条件的字段,2. 有唯一性限制的字段,3.经常GROUP BY和ORDER BY的列,4.UPDATE、DELETE的WHERE条件列,,5.DISTINCT字段需要创建索引,6.多表JOIN连接操作时,7. 使用列的类型小的创建索引,,,,,,,,,,,,上一篇我们主要是对索引设计体系的一个讲解,本篇
当我尝试使用和库打印文档时-一切都很好,但打印速度很慢。这个问题有什么解决方案吗? 以下是Python代码:
ES_MAX_MEM设置为4G,ES_MIN_MEM设置为2G 每天晚上,我们在。NET应用程序中使用NEST对15000个文档进行索引/重新索引。在任何给定时间,只有一个索引具有<=15000个文档。 当服务器第一次安装时,索引和搜索在最初的几天里是快速的,然后索引开始变得越来越慢。大容量索引一次索引100个文档,一段时间后,大容量操作最多需要15秒才能完成。之后,我们开始看到大量以下异常和索引