【问题标题】:Search in columns of view in database在数据库中的视图列中搜索
【发布时间】:2016-07-21 15:10:52
【问题描述】:

我有一个视图,我通过连接几个表来创建视图,这些表的记录可以更改,因此视图列的内容也可以更改。 视图的列包含地址、随机数、日期、一些随机字符串等数据。

我接受来自用户的搜索文本,如果其中任何一列包含用户输入的文本,则返回行。

我的视图有数百万条记录,所以像查询一样正常(需要很长时间)? 当它的表更改更改时搜索此视图的最有效方法是什么?

我正在使用 oracle 数据库、C#、实体框架。

【问题讨论】:

  • 有你正确的索引。在原来的桌子上?
  • 不,我没有对原始表进行任何索引。如果我对原始表进行索引并且表数据发生更改,我的搜索是否会返回错误的数据?为了保持我的搜索更新和准确,我是否需要每次都重新索引它?
  • 我从未实现过基于索引的搜索,请详细回答
  • 我已经发布了主要建议的第一个答案..
  • 我已经更新了答案.. 希望对您有用,您可以在 google 上找到很多关于索引和查询优化的教程

标签: c# sql oracle


【解决方案1】:

为了获得更好的性能,您应该在原始表中正确添加索引..这些索引会在每次更改时由 rdbms 引擎自动刷新..所以您不可能通过索引值获取错误的数据..索引值和表数据包含相同的值..

您不需要每次都重新索引...有时(每月)您可以更新相关的统计信息..

所以索引可以更好地改变你的表现..这也适用于视图

在原始表顶部创建的视图不是原始表的存储副本..因此索引有助于视图更快地呈现预期结果..

正确设计的索引在数据库服务器中用于重要目的:

他们让 rdbms

  • 查找相邻行的组而不是单行。
  • 通过按所需顺序读取行来避免排序。
  • 让服务器(有时)仅通过索引来满足整个查询,避免(在可能的情况下)访问表的需要。

来自mysqlhttps://dev.mysql.com/doc/refman/5.5/en/mysql-indexes.html

https://dev.mysql.com/doc/refman/5.5/en/column-indexes.html https://dev.mysql.com/doc/refman/5.5/en/multiple-column-indexes.html

http://code.tutsplus.com/tutorials/top-20-mysql-best-practices--net-7855

http://use-the-index-luke.com

【讨论】:

  • 感谢您这么好的回复。我认为索引仅用于搜索。您能否提供一些包含一些实施指南/步骤的链接。
  • 感谢您的链接。
猜你喜欢
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多