标签: indexing

使用 MySQL,“ALTER TABLE ... DISABLE KEYS;”会持续多久?最后声明?

如果您禁用 mysql INNODB 表上的键(暂停索引),该设置持续多长时间?

对于像这样的查询:

ALTER TABLE users DISABLE KEYS;
Run Code Online (Sandbox Code Playgroud)

是否在脚本结束时重新启用密钥? 或者它们会持续到您明确重新打开索引?

mysql database database-administration indexing

12
推荐指数
2
解决办法
7329
查看次数

Mysql:在 14 亿条记录上创建索引

我有一张包含 14 亿条记录的表。表结构如下:

CREATE TABLE text_page (
    text VARCHAR(255),
    page_id INT UNSIGNED
) ENGINE=MYISAM DEFAULT CHARSET=ascii
Run Code Online (Sandbox Code Playgroud)

要求是在列上创建索引text

表大小约为34G。

我尝试通过以下语句创建索引:

ALTER TABLE text_page ADD KEY ix_text (text)
Run Code Online (Sandbox Code Playgroud)

经过 10 个小时的等待,我终于放弃了这种方法。

这个问题有什么可行的解决方案吗?

UPDATE:该表不太可能被更新或插入或删除。之所以要在列上创建索引,text是因为这种sql查询会被频繁执行:

SELECT page_id FROM text_page WHERE text = ?
Run Code Online (Sandbox Code Playgroud)

更新:我已经通过对表进行分区解决了这个问题。

该表在 column 上分为 40 个部分text。然后在表上创建索引大约需要1个小时才能完成。

当表变得很大时,MySQL 索引创建似乎变得很慢。分区将表减少为更小的主干。

mysql indexing

9
推荐指数
1
解决办法
2万
查看次数

具有代理标识键的聚集索引的填充因子的正确值

我有一个大表,它有一个带有标识主键的聚集索引。我正在决定该表的填充因子的正确值以最小化页面拆分。我们使用每天运行的脚本来维护索引,该脚本测量碎片并采取适当的措施。该表包含可变长度列。

我的第一个想法是将它设置为 100(因为记录应该只写入表的末尾)但我认为对可变长度列的更改也可能导致页面拆分,所以我现在转向 90。

任何建议表示赞赏。

indexes indexing sql-server

8
推荐指数
2
解决办法
3314
查看次数

Mysql 更改 ft_max_word_len 错误

所以,我在我的机器上安装了 MySQL,我需要更改ft_max_word_lenMySQL 将索引的最大字长。但是,当我通过提供的工具设置它并查询它时,它仍然将其列为最多 84 个(我需要 128 个以上)。当我尝试使用命令行时,我得到以下信息:

C:\>mysqld --ft_max_word_len=128
111210 23:55:46 [Warning] option 'ft_max_word_len': unsigned value 256 adjusted to 84
111210 23:55:46 [Warning] option 'ft_max_word_len': unsigned value 128 adjusted to 84
Run Code Online (Sandbox Code Playgroud)

应该注意的是,我尝试在 GUI 工具中将其更改为 256,因此这可能是该值的来源。但是为什么我会得到两个,为什么我不能调整这个值?

值得注意的是,我使用的是 Windows 7 和 MySQL 5.1.41(64 位)。

更新:从@thinice 的评论来看,这让我相信这是 MySQL 中的一个错误(从它的声音来看,这是一个几乎没有记录的错误,我需要对其进行更改)。所以也许我的问题是,有人对如何更改该值有任何了解吗?

mysql windows indexing full-text-search

7
推荐指数
1
解决办法
466
查看次数

如何强制 Outlook 2007 在 Windows XP SP 3 上重新索引它的搜索?

所以我有一台运行 Outlook 2007 的 Windows XP SP 3 机器。当我在 Outlook 中搜索使用基本关键字(例如“MySQL”)存在的电子邮件时,我没有得到任何结果。但是,Outlook 给了我以下消息:

搜索结果可能不完整,因为项目仍在编入索引。点击这里了解更多详情。

当我点击时,我得到以下信息:

Outlook 当前正在索引您的项目。
搜索结果可能不完整,因为项目仍在编入索引。
“邮箱 - 用户”中剩余 8783 个项目
所有打开的邮箱中剩余 8812 个项目。

问题是,这些是它几天来一直在报告的数字,而 Outlook 每天开放 8 小时。索引似乎不起作用。据我所知,该指数似乎在大约 3 周前停止了。

如何强制 Outlook 2007 重新索引所有内容并重新开始正常工作?

windows outlook windows-xp indexing outlook-2007

6
推荐指数
1
解决办法
6万
查看次数

在 SQL Server 上重新索引需要多长时间?

最近继承了一个很大很乱的数据库,需要清理一下。为了了解大小,主数据库目前包含 3 个大表,每个表大约有 3 亿行,占用大约 225GB 的存储空间。每天添加超过 500 万行。

由于严重的磁盘空间不足(前任根本没有归档旧数据或管理它的大小),我被迫从最大的表中删除了大约 2.8 亿行。这个过程需要 25 多个小时才能完成,在此期间数据库需要与面向客户的应用程序断开连接。

现在,我需要重新索引表,因为选择和插入需要很长时间。但是,我不能无限期地使数据库脱机,我需要能够估计执行重新索引所需的时间。我以前从未重新索引过这么大的表,所以我真的没有任何好的参考点可以利用。

主表包括一个聚集的、单调递增的主键,以及一个非唯一的非聚集键。我有足够的磁盘空间来执行重新索引。

所以我的问题是:人们大约需要多长时间才能做到这一点?估计重新索引时间的好的经验法则是什么?

indexing sql-server sql-server-2005

6
推荐指数
1
解决办法
3万
查看次数

TrueCrypt 驱动器上的 Vista / Win7 索引

Vista 和 Windows 7 将少量信息保存到后台的中央位置。

我知道的实例是桌面搜索索引、最近的文档和缩略图(保存到\Users\[User Account Name]\AppData\Local\Microsoft\Windows\Explorer)。

我怎样才能确保没有信息从安装的 TrueCrypt 驱动器或插入的 USB 驱动器中保存?

有没有办法配置 Widnows 7,以便只有用户明确运行的程序,而不是后台服务,才能访问驱动器上的数据。更好的是,是否可以这样做以阻止整个驱动器类别(例如所有可移动驱动器,然后始终将 TC 驱动器安装为可移动驱动器)?

请注意,我不想完全禁用桌面搜索和缩略图缓存——这太不方便了。

编辑:* Bruce Scheiner 的论文与加密卷中的信息泄漏有关。

windows-7 privacy truecrypt indexing

5
推荐指数
1
解决办法
2083
查看次数

在 Ubuntu 上索引 PDF 文件

我正在 Ubuntu 中寻找一种解决方案,该解决方案可以为 PDF(和 ps?)文件编制索引以供以后搜索。

标准是:

  1. 兼容性:通常提取文本会有所不同,具体取决于用于创建 PDF 的软件。某些 PDF 也可以“锁定”,我想人们应该尊重这一点。
  2. 搜索功能:通配符、正则表达式、“模糊”匹配。
  3. 搜索速度

在我的情况下,我想索引学术期刊文章的文件夹,因此要求无论使用什么软件创建 PDF,它都能始终如一地工作。我已经在使用参考管理器,所以不想替换它。

例如:一个好的 Beagle 前端,以及一个允许它索引 PDF 的插件将是完美的。

ubuntu pdf indexing

5
推荐指数
1
解决办法
4537
查看次数

Windows 搜索不搜索文件

我正在尝试让 Windows Search 在我的 Windows Server 2008 SP2 文件服务器上工作,以便我可以在文件中搜索内容。

我已将 Windows 搜索服务角色添加到服务器,并使用资源管理器中的右键单击属性将一些文件夹设置为“索引此位置”。

问题是,无论是在服务器上还是远程,我都无法在文件中进行搜索。

我似乎在 GUI 中发现了一些不一致的地方,例如“索引选项”面板只显示了 6 个索引位置,但是如果我单击“修改”,我会看到几乎所有内容都被勾选。

索引选项

例如,“基础设施”下的“SeachTest”文件夹勾选了“索引此位置”选项,但“项目”文件夹没有。我想这就是为什么有些是灰色的,有些不是,但它们都被打勾。T “SearchTest”文件夹包含一些文件,其中只有文本PurpleOrange,所以我应该能够找到这些文件。

所以,总结一下:

  • 哪些位置被索引?“索引这些位置”列表中的那些,勾选的,或者列表中没有变灰的?
  • 如何进入可以在搜索框中单击并键入PurpleOrange并查看文件的状态?

windows-server-2008 search indexing

5
推荐指数
1
解决办法
3万
查看次数

索引这个非常大的表的最佳方法

我有下表

CREATE TABLE DiaryEntries
(
 [userId] [uniqueidentifier] NOT NULL,
 [setOn] [datetime] NOT NULL, -- always set to GETDATE().
 [entry] [nvarchar](255) NULL
)
Run Code Online (Sandbox Code Playgroud)

每个用户每天将插入大约 3 个条目。将有大约 1'000'000 名用户。这意味着该表中每天有 3'000'000 条新记录。一旦记录超过 1 个月,我们就会将其删除。

大多数查询都有以下 WHERE 子句:

WHERE userId = @userId AND setOn > @setOn
Run Code Online (Sandbox Code Playgroud)

大多数查询返回不超过 3 行,除了一个返回本月内插入的所有行(最多 90 行)。

插入记录后,日期和用户 ID 不能更改。

现在我的问题是 - 如何最好地安排这张表的索引?我坚持两种选择:

  1. (userId, setOn) 上的聚集索引 - 这将使我快速搜索,但我担心过度的页面拆分,因为我们将插入很多中间值(相同的用户 ID 但不同的日期)。
  2. (userId) 和 (setOn) 上的非聚集索引 - 这也会导致 (userId) 索引上的页面拆分(但它是否与第一个选项一样昂贵?)。搜索速度变慢了,因为我们使用了 NC 索引。
  3. 附加列 (id) 上的聚集索引和 (userId, setOn) 上的非聚集索引 - 这将消除数据表的页面拆分,但仍会导致 NC 索引上的一些。此选项也不是搜索的最佳选择,因为我们使用 …

indexing sql-server sql-server-2008

4
推荐指数
2
解决办法
2万
查看次数