- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的第一个attempt在一个问题被证明是令人困惑的问题上,我收到了一些混合的答案(可能是由于我的问题令人困惑)。这是一个不同的更好的问题...
假设我的表在 MySQL 中看起来像这样:
CREATE TABLE `people` (
`person_id` INT(11),
`alias_num` TINYINT(3),
`first_name` VARCHAR(255) NOT NULL,
`last_name` VARCHAR(255) NOT NULL,
PRIMARY KEY (`person_id`,`alias_num`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;
像这样的数据:
person_id alias_num first_name last_name
--------- --------- ---------- ---------
1 1 John Smith
2 1 Joe Smith
3 1 Bill Smith # <-- Notice this guy has 3 aliases
3 2 Billy Smith # <--
3 3 William Smith # <--
4 1 Susan Thompson
...
假设 jo
和 smi
被输入到一个 HTML 搜索表单中(两个字段都是必需的),我的查询将始终是这样的:
SELECT person_id FROM people WHERE first_name LIKE 'jo%' AND last_name LIKE 'smi%';
问题:添加到我的表中以使上述查询最快的最佳索引是什么?
注意:我对一个包含将近一百万行的表进行了一些快速测试,看起来 first_name(15)
和 last_name(15)
的 2 个独立索引似乎更快比 last_name(15),first_name(15)
使用 SQL_NO_CACHE 的复合索引?但也许我测试错了。我也在考虑将复合索引和单个名称的索引结合起来可能会更好(如果这不会混淆优化器)?
奖励问题:
考虑到我搜索的是部分单词,而不是完整单词,像 ElasticSearch 这样的工具是否可以更好地执行此查询?
最佳答案
你是对的,单独的 first_name 和 last_name 索引会更好。
根据我的经验,复合索引最适用于非变量字段(如 2 个数字)。我会在每个名称字段上使用一个索引。
如果您还没有调整 my.cnf 设置,您也可以调整,调整 MySQL 可用的内存可以在索引的排序/搜索方面产生显着差异。
至于 my.cnf,那是另一个问题,IMO。您可以从这里开始:https://dev.mysql.com/doc/refman/5.6/en/server-default-configuration-file.html . Mysql 附带 my-large.cnf、my-huge.cnf,因此这些应该会给您一个良好的开端。
关于mysql - 使用尾随通配符搜索 first_name 和 last_name 的最佳索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34002655/
我想查找一个字符串是否包含“Are”、“Ate”、“Aste”或“Anche”之类的内容,例如 string.contains("A%e")。java的表达方式:从员工中选择名字,其中名字类似于“A%
错误号:1064 您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 'WHEN t2.first_name <> '' then CONCAT(t2.first_name,
我有这个问题 Cannot read property 'first_name' of undefined 这是我的 HTML 文件 checkout.html Fir
如何隔离 first_name 键以在以下对象中输出其值? { "first_name": "D", "last_name": "N", "phone_number": 123
public function process(Zend_Controller_Request_Abstract $request) { $this->first_name = $this-
任何人都可以为我阐明这一点吗? # 的未定义方法“first_name” 这是 show.html First name: Second name: About:
所以,我正在使用设计来对 Rails 应用程序进行用户身份验证。我想为设计用户添加名字和姓氏。因此,我为用户数据库创建了新列。不幸的是,当我尝试我的表单时,我得到了“未定义的方法‘first_name
我想点击收件箱中主题为“测试”的未读邮件(新邮件) 此功能目前点击主题为“测试”的旧电子邮件。我想对主题为“测试”的未读电子邮件执行此功能 public static WebElement execu
我可以用这段代码得到图片: https://graph.facebook.com/userid/picture 但这行不通: https://graph.facebook.com/userid/fir
当我将表单值插入数据库时,它得到列“first_name”不能为空。但在数据库中,first_name 不为空。但它显示空错误。 公共(public)函数save() { $sql = "
我的 PostgreSQL 数据库中有两个表。 一个表,称之为“存档”,有一列“名称”,它是两个单词的名字和姓氏,例如'John Smith' 和一个空列,其中包含 'user_id'。 第二个表称为
我正在通过教程学习 MEAN 堆栈。当我在本地主机上尝试时,出现错误。 TypeError: Cannot read property 'first_name' of undefined at rou
假设我有如下所示的数组。 Array ( [0] => agent_name [1] => first_name [2] => my_last_name [3] =>
Rails 3.1 设计 1.4.2 我在设计的用户表中添加了 first_name 和 last_name 列。然后我习惯于控制台为我的第一个用户添加 first_name 和 last_name。
这个错误意味着什么? AttributeError:“CustomUser”对象没有属性“first_name” custom_user/models.py from time import time
我在我的应用中集成了 Firebase 分析。也设置了一些用户属性。我已经在控制台中注册了这些属性,它工作正常,但现在的属性除外。那个美丽的属性(property)的名字是 first_name。 :
这个问题已经有答案了: How do I return the response from an asynchronous call? (42 个回答) 已关闭 6 年前。 我不断收到TypeErro
在 django 中工作。 为配置文件模型创建 unicode 输出,其中用户姓氏是可选的。 Desired: John D. if last name John if not last na
我是ibatis新手, 我用ibatis写了一个小程序。 但是我收到以下错误。我用尽各种办法。我不知道如何解决。 谁能告诉我为什么会发生这种情况以及避免此错误的方法是什么? Exception in
使用 Django 1.11 和 django-pyodbc-azure 最新版本(如果相关)。 我是 Django 新手,一直遵循 1.11 教程,在此之前没有任何问题,但我感到非常困惑。 这是我的
我是一名优秀的程序员,十分优秀!