我想了解拥有近80,000条记录的数据库的优化技术, 优化可能性列表
我在Android平台上使用我的移动项目 我使用sqlite,我花了很多时间来检索数据
由于
答案 0 :(得分:9)
好吧,只有80,000条记录并且假设您的数据库设计得很好并且规范化了,只需在WHERE或ORDER BY子句中经常使用的列上添加索引即可。
您可以使用其他更复杂的技术(例如对某些表进行非规范化,分区等),但是当您有数百万条记录需要处理时,这些技术通常才开始发挥作用。
ETA:
我看到你更新了这个问题,提到这是在移动平台上 - 这可能会改变一些事情。
假设您根本无法削减数据集,您可以做的一件事就是尝试对数据库进行一些分区。这里的想法是将您的一个大表分成几个较小的相同表,每个表都包含数据的子集。
给定行中的哪些表将取决于您选择如何对其进行分区。例如,如果您有一个“customer_id”字段,范围从0到10,000,您可能会将客户0 - 2500放在table1中,2,500 - 5,000放在table2中,等等。将一个大表拆分为4个较小的表。然后,您的应用程序中会有逻辑,用于确定要查询哪些表(或多个表)以检索给定记录。
您可能希望以这样的方式对数据进行分区,即一般只需要查询其中一个分区。具体如何对数据进行分区将取决于您拥有哪些字段以及如何使用它们,但总体思路是一样的。
答案 1 :(得分:1)
删除索引
规格化
答案 2 :(得分:1)
这些天80k行的行数不多。具有这些索引的查询的聪明索引将为您提供正确的服务。
答案 3 :(得分:1)
了解如何显示查询执行图,然后学习理解它们的含义,然后相应地优化索引,表格和查询。
答案 4 :(得分:1)
如此广泛的主题,这取决于您想要优化的内容。但基础知识:
80,000条记录并不多,所以我会停在那里(大型dbs,数百万条数据行,我建议对数据进行分区)
答案 5 :(得分:0)
你必须对你想做的事情更加具体。你的运营组合是什么?你的桌子结构是什么? 泛型建议是在适当的时候使用索引,但是你不会对这样的通用问题得到很多帮助。
此外,80,000条记录都没有。这是一个中等大小的桌子,不应该让任何像样的数据库破坏汗水。
答案 6 :(得分:0)
首先,如果你想要一个表现良好的数据库,索引真的是必需的。
除此之外,这些技术取决于您需要优化的内容:尺寸,速度,内存等?
答案 7 :(得分:0)
值得了解的一件事是,在索引字段的where语句中使用函数将导致不使用索引。
示例(Oracle):
SELECT indexed_text FROM your_table WHERE upper(indexed_text) = 'UPPERCASE TEXT';