想象一下带有一组复选框的Web表单(可以选择其中的任何一个或全部).我选择将它们保存在存储在数据库表的一列中的逗号分隔值列表中.
现在,我知道正确的解决方案是创建第二个表并正确地规范化数据库.实现简单的解决方案更快,我想快速获得该应用程序的概念验证,而无需花费太多时间.
我认为节省的时间和更简单的代码在我的情况下是值得的,这是一个可辩护的设计选择,还是我应该从一开始就将其标准化?
更多上下文,这是一个小型内部应用程序,实际上取代了存储在共享文件夹中的Excel文件.我也在问,因为我正在考虑清理程序并使其更易于维护.在那里有一些我并不完全满意的事情,其中一个是这个问题的主题.
关于LIKE查询数据库中特定表的响应时间,我看到了相当大的变化.有时我会在200-400毫秒内得到结果(非常可接受),但有时候返回结果可能需要30秒.
我知道LIKE查询是非常耗费资源的,但我只是不明白为什么响应时间会有这么大的差异.我已经在该owner1字段上构建了一个btree索引,但我认为这对LIKE查询没有帮助.有人有主意吗?
示例SQL:
SELECT gid, owner1 FORM parcels
WHERE owner1 ILIKE '%someones name%' LIMIT 10
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
SELECT gid, owner1 FROM parcels
WHERE lower(owner1) LIKE lower('%someones name%') LIMIT 10
Run Code Online (Sandbox Code Playgroud)
和:
SELECT gid, owner1 FROM parcels
WHERE lower(owner1) LIKE lower('someones name%') LIMIT 10
Run Code Online (Sandbox Code Playgroud)
有类似的结果.
表行数:约95,000.
postgresql indexing query-optimization pattern-matching sql-like