2009-07-14 242 views
0

我想知道数据库优化技术,拥有近8万条记录,对于优化SQL优化技术

我使用在Android平台 我的移动项目的可能性 名单我使用SQLite,我花费大量的时间中检索数据

感谢

+2

,你想要什么优化(?速度,存储,两者) – lexu 2009-07-14 12:16:32

+1

对于那些谁也说:“不是一个真正的问题:”我觉得这是一个真正的问题,只是措辞不够好。 Rakesh,你能说出你认为缓慢的原因,以及为什么你需要优化。 – 2009-07-14 12:16:59

+0

询问一般主题区域是合理的;这个人只是要求一个清单。 – 2009-07-14 12:19:30

回答

1
  • 创建索引
  • 删除索引

  • 正常化

  • 去正规化
1

80K的行并不多行的这些日子。使用这些索引的查询的聪明索引将为您提供正确的服务。

1

了解如何显示查询执行映射,然后学会理解它们的含义,然后相应地优化索引,表格和查询。

8

那么,只有80,000条记录,并且假设您的数据库设计良好且规范化,只需在您经常在WHERE或ORDER BY子句中使用的列上添加索引就足够了。你可以使用其他更复杂的技术(比如反规范化某些表,分区等),但通常只有当你有数百万条记录需要处理时才会开始使用这些技术。

ETA:

我看到你更新的问题一提的是,这是在移动平台上 - 这可能改变的事情一点。

假设你根本不能削减数据集,你可能会做的一件事就是尝试对数据库进行一些分区。这里的想法是把你的一个大表分割成几个更小的相同的表,每个表保存一部分数据。

给定行将进入哪些表将取决于你如何选择分区。例如,如果您有一个“customer_id”字段,其范围可以从0到10,000,您可以将客户0 - 2500放在表1中,将2,500 - 5,000放在表2中等,将一个大表分成4个小表。然后,您的应用程序中会有逻辑来确定要查询哪个表(或多个表)来检索给定的记录。

您希望以这种方式对数据进行分区,通常只需要一次查询其中一个分区。具体如何划分数据取决于你有哪些领域以及你如何使用它们,但总的想法是一样的。

0

你真的必须对你想要做的事情更具体。你的业务组合是什么?你的表结构是什么? 通用的建议是使用适当的索引,但对于这样的通用问题你不会得到太多帮助。

此外,80,000条记录不算什么。这是一张中等大小的桌子,不应该让任何体面的数据库都能够冒出汗来。

0

首先,如果你想要一个性能良好的数据库,索引是非常必要的。

除此之外,这些技术取决于您需要优化的内容:大小,速度,内存等?

1

如此广泛的话题,这取决于您想要优化的内容。但基本知识:

  • 索引。一个好的索引策略很重要,索引经常被查询/排序的正确列是非常重要的。但是,您添加的索引越多,INSERT和UPDATE就越慢,因此需要权衡。
  • 维护。保持索引整理并统计最新
  • 优化的查询。识别速度慢的查询(使用从SQL 2005开始提供的分析器/内置信息),并查看它们是否可以更有效地编写(例如避免CURSOR,尽可能使用基于集合的操作
  • 参数化/ SP使用参数化SQL查询数据库,而不是用硬编码搜索值即席SQL,这将能够更好地执行计划的缓存和重用。
  • 开始与规范化的数据库架构,然后去正常化,如果适当提高性能

80000记录并不多,所以我会停下来(大数据块,有数百万数据行,我建议分区数据)

0

有一件值得了解的事情是,在索引字段的where语句中使用函数将导致索引不被使用。

例(甲骨文):

您使用什么类型的DB的
SELECT indexed_text FROM your_table WHERE upper(indexed_text) = 'UPPERCASE TEXT';