- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的服务器上有一个 MySQL 数据库,其中一个表具有主索引和所有其他列的全文索引。通常我会执行一个 SELECT 语句,例如:
SELECT * FROM myTable WHERE MATCH(myInfo) AGAINST ('stuff') ORDER BY id 限制 30
这工作正常,但速度很慢 - ORDER BY id
子句大大减慢了速度,尤其是当经常发生大量点击时。例如,没有子句的搜索需要大约 0.001 秒,而有子句的搜索需要 0.6 秒(但会产生理想的结果)。
是否可以对我的表进行预排序,以便我永远不需要 ORDER BY
运算符?该表是静态的——数据只会被读取。毕竟,必须对 5000 次匹配进行排序,然后返回(顶部)30 次似乎是一种浪费,因为这可以很容易地提前决定。
如果没有,我该怎么办?
PS - MATCH
似乎把事情搞得一团糟,而 LIKE
虽然速度慢但不会,因此不需要 ORDER BY
。
%%编辑 #1,输出 EXPLAIN SELECT
on phpMyAdmin
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE myTable fulltext full_index full_index 0 1 Using where
编辑#2,更好的解释
表示时间用于对结果进行排序。
状态时间
从 0.000016 开始
正在检查查询 0.000048 的查询缓存
开表 0.000012
系统锁0.000007
表锁0.000024
初始化 0.000026
优化 0.000010
统计 0.000017
准备 0.000012
全文初始化0.000199
执行 0.000004
排序结果0.001663
发送数据0.000304
结束 0.000005
查询结束0.000004
释放元素 0.000025
将结果存储在查询缓存 0.000007
记录慢速查询 0.000003
清理 0.000005
最佳答案
1-Is it possible to presort my table?
不,表格已经被PK预排序了。
全文索引强制按照该索引指定的顺序访问行。
因此,之后需要对其进行重新排序。
2- what can I do about this?
如果您不介意得到稍微不同的结果,您可以将查询更改为
SELECT * FROM
(
SELECT * FROM myTable WHERE MATCH(myInfo) AGAINST ('stuff') LIMIT 30
) as s ORDER BY id
要获得接下来的 30 个结果,请执行 limit 30,30
等操作。
您还可以通过不选择所有行而只选择您需要的行来加快查询速度。这将限制 MySQL 必须保留在内存中的数据量,从而限制排序时必须移动的数据量。
SELECT id, myinfo FROM mytable ....
关于MySQL 和预排序表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7241316/
我正在阅读哈德利的 Advanced R并尝试一些东西。我正在尝试创建一个 lazy闭包函数返回一个带有提供的函数 data.frame在其环境中以及使用 with并且能够在以后提供额外的函数参数。
我有两个 ViewController。初始 ViewController 是输入和存储 URL 的地方。此初始 ViewController 的 viewDidLoad 还应该在应用程序启动时开始加
你是怎么用的 对于应用程序中的 ListView 项也应该在设备 <11 上运行? 由于 activated_state 在 HC 之前不可用,我只能想到两个肮脏的解决方法: 在您的 Activit
我正在为 android (2.1 > 3.1) 编写一个应用程序,我想使用熟悉的做法,即在 Honeycomb 应用程序中使用应用程序图标来进入家庭 Activity ,但是,当我之前运行该 Act
如果搜索的键不存在,我如何覆盖方法 GET 或编写一个将在服务器端执行的新函数返回另一个键值? 示例: 如果关键字“word_1 word_2 word_3 word_4”不存在则搜索关键字“word
对于我的存储库,我使用的是 Git 和 Stash。在 Stash 端,我限制了(只读)对 master 的访问权限,因此任何用户都可以从 master 分支分支以获取功能/分支,但不能直接 merg
如何配置dgrid及其存储以定义渲染行时是否已经选择了行? 例如,如果我的行数据是这样的: { id: 1, name: 'Item Name', selected: true } 我当前
有没有一种方法可以将变量从一个 BeanShell 前/后处理器引用到另一个 BeanShell 处理器(它们在同一个线程组中)? 如果我在 HTTP 请求下的 BeanShell 预处理器中创建了一
问题 我已尝试添加预操作 shell 脚本,这些脚本会根据我正在构建的内容打开/关闭我的 .pch 文件中的某些定义。 但是,在运行构建时,没有任何反应。我不是一个流利的 shell 脚本编写者,所以
我有一个 HTML 字符串用作 jQuery 输入文档。 // the variable html contains the HTML code jQuery( html ).find( 'p' ).
在 Mercurial 中允许 merge 之前有没有办法进行一些检查? 通过将以下内容添加到 ~/.hg/hgrc,我找到了更新前 Hook ,并拥有一个在允许更新之前运行的脚本: [hooks]
总结: 预 Controller Hook 是否在缓存期间执行?是否有任何 Hook 点可以执行? (系统前?) 我应该强调一个事实,即 Hook 不会影响发送到浏览器的内容。这不是问题。 详细版:
我正在使用适用于 android 的 Skobbler Map API,到目前为止它一直非常好。按照官方的“操作方法”,我已经能够将 map 应用到我的应用程序中。比我可以让应用程序下载 map 并离
当我安装bcrypt时我的 hapi js 项目的模块尚未安装,它显示类似 node-pre-gyp install --fallback-to-build 我尝试通过运行来安装; npm i nod
我试图使用此代码的变体: apply plugin: 'java' apply plugin: 'idea' idea.workspace.iws.withXml { provider ->
假设我们有一个 PHP 项目,其依赖项 A 和 B 分别依赖于 PHP 库 X,但版本不同。 通常,人们会使用诸如 composer 之类的 PHP 依赖管理器,它可以通过在与 A 和 B 兼容的版本
这似乎违背了代码块的目的,但我希望能够在代码块中加粗。例如,如果我想将返回行加粗: int main(void) { **return 0;** } 最佳答案 您必须在 HTML 中执行此操作
我们是否应该使用 Huggingface(预)训练一个 BERT 无框模型的小写输入数据?我查看了 Thomas Wolf ( https://github.com/huggingface/trans
我有两个模式: 技能: var mongoose = require("mongoose"); var SkillSchema = new mongoose.Schema({ skill: {
我这里有问题。这适用于 Chrome,但我无法在 IE11 的 index.html 中使用任何动画。当它不想工作时,我会看到一个静态屏幕。同样在 IE 中,消息不会像它应该的那样消失。如果我将 di
我是一名优秀的程序员,十分优秀!