mysql - 在不需要 utf8 字符的 MySQL 列中设置更严格的排序规则是否更有效?
问题描述
创建一个新表,我希望在其中索引几VARCHAR
列,但其中只有一个真正需要utf8_unicode_ci
排序规则。
搜索表以仅将该单列设置为utf8_unicode_ci
排序规则时会更有效吗?
或者如果我用utf8_unicode_ci
排序规则整理整个表格,它是否相同?
解决方案
如果使用二进制排序规则,字符串比较会快一点。
当您使用 utf8_unicode_ci 之类的排序规则时,MySQL 必须逐个字符地进行字符串比较,以便根据您使用的排序规则中的规则判断每个字符是否等效。
但是使用二进制排序规则,MySQL 被优化为使用系统调用memcmp()
将整个字符串作为文字字节进行比较。这意味着没有字符等效规则。此比较区分大小写。
但是,这样做的性能优势很小,使用索引的优势要大得多。
推荐阅读
- python - 如何在快速 api 视图上添加文档以发布正文模型?
- ios - 是否有可能在一个手势识别器中触发另一个手势识别器(快速)?
- powershell - 使用 PowerShell 修改具有最高权限的任务的触发器
- firebase - 'GoogleUtilities/AppDelegateSwizzler/Private/GULApplication.h' 文件未找到在反应原生中添加 rnfirebase 时出错
- elasticsearch - 如何改进我的 GeoPoint ElasticSearch 索引以获得更好的响应时间?
- oracle-sqldeveloper - 将 2 个表与表 1 中的子字符串匹配以匹配表 2
- python - 我们如何在 Django 上表示 pandas.series 值?
- ios - 如何创建无限水平滚动视图?
- numpy - 如何在 seaborn 包函数的热图中操作 xticklabels 和 yticklabels?
- python - Python列表:IndexError:列表索引超出范围