sql - PostgreSQL 中按列值的搜索性能
问题描述
我有一张桌子,里面有大约 4000 行。该表有一个名为“类型”的列。查询
SELECT DISTINCT type FROM table
显示 14 行。
在最近的将来,该表将增长到大约 1000 万行,我不知道不同的“类型”值是保留 14 还是增加。
如果我创建另一个名为“types”的表并在我的主表中创建“type_id”列而不是字符串“type”,这是否有意义?在这种情况下,每次遇到新值时,我都必须在类型表中插入新行。
或者仅仅为我的类型列添加一个哈希索引然后搜索就足够了
SELECT * FROM table WHERE table.type IN('value1', 'value2', 'value3')
?
解决方案
我投票给一张新桌子。这将确保您有一个明确的类型列表。您可以添加其他信息,例如:
- 代码
- 姓名
- 描述
- 创建日期
- 由...制作
此外,这将使任何查询都更快地获取类型列表(例如对于应用程序)。它还将确保类型是一致的。如果它们是字符串,这一点尤其重要——它们可能拼写错误、有隐藏字符,或者只是激增。
推荐阅读
- xamarin - 如何使用 Xamarin.Essentials WebAuthenticator 中的 access_token?
- linux - 美元有什么好处?在 bash
- ruby-on-rails - 从 Rails 6 应用程序中完全删除 /assets 目录
- c++ - 如何在 luabind (lua, c++) 中使用 boost::any 类型?
- java - 尝试在 Burp 中导入插件时出现 ClassNotFoundException
- python - 执行用户告诉它不工作的次数的程序
- c++ - 在向量练习中为架构 x86_64 编译 C++ 未识别符号
- python - 使用 Gaussian NB 的多类分类,为准确度、精度和 f1 分数提供相同的输出
- c - 指数动态内存分配
- model - 我可以从搅拌机的控制台导出模型吗?