我正在开发一项工作服务,其功能包括径向搜索,全文搜索,全文搜索功能+禁用某些工作列表(例如取消选中文本框,不再返回全职作业)。
正在开发Sphinx的开发人员希望将数据库信息全部存储为带有密钥的整数(因此可以存储表“Job Type”值,例如1 =“part-time”和2 =“full -time“)...而其他开发人员希望将数据库保留为字符串(因此在”作业类型“表下,它表示”兼职“或”全职“。
是否有理由将数据库保持为整数?或者字符串应该没问题?
谢谢!
沃克
答案 0 :(得分:3)
选择密钥会对性能产生巨大影响。尽可能使用int而不是字符串。这是使用“代理键”调用的,其中键提供了一种独特而快速的方法来查找数据,而不是站在它自己的数据上。
字符串比较是资源密集型的,可能比比较数字更糟糕。
您可以从代理键驱动UI,但显示另一列(例如job_type)。这样,当您点击数据库时,您将传入int,并避免查看表以查找具有匹配字符串的行。
当谈到连接数据库中的表时,如果您使用int或其他数字作为主键,它们将更快地运行 。
编辑:在您提到的特定情况下,如果您的字段可能只有两个选项,并且不太可能更改,您可能需要查看类似字段的内容,并且可以将其命名为IsFullTime 。位或布尔字段包含1或0,没有别的,通常与另一个字段无关。
答案 1 :(得分:1)
如果你正在规范你的结构(我希望你是),那么数字键将是最有效的。
答案 2 :(得分:1)
除了使用整数主键的通常原因之外,使用带有Sphinx的整数是必不可少的,因为成功的Sphinx搜索返回的结果集是与匹配项关联的文档ID列表。然后使用这些ID从数据库中提取相关数据。 Sphinx不会直接从数据库返回行。
有关详细信息,请参阅Sphinx manual,尤其是3.5. Restrictions on the source data。