2012-01-24 179 views
0
  1. 我有一个表将现包含超过43万条记录。要执行SELECT,我通常选择与同场的记录,说A。这将是更有效的通过不同A表分为几个表,并保存在数据库中?我能赚多少钱?提高MySQL的效率

  2. 我有一个名为entry: {entryid (PK), B}的表,其中包含6千条记录,其他几个表的结构类似T1: {id(PK), entryid, C, ...},其中包含数百万条记录。以下两个流程是否具有相同的效率?

    SELECT id FROM T1, entry WHERE T1.entryid = entry.entryid AND entry.B = XXX

SELECT entryid FROM entry WHERE B = XXX 
//format a string S as (entryid1, entryid2, ...) 
//then run 
SELECT id FROM T1 WHERE entryid IN S 
+1

你为什么不衡量这一切? –

+0

尝试使用explain关键字,并确保您的索引尽可能好,如果您想快速选择。 –

+0

@DerekOrgan什么是解释关键字? – DrXCheng

回答

1
  1. 您将获得的性能提升。您不必手动执行此操作,但可以使用内置的MySQL partitioning。你会得到多少真正取决于你的配置,这将是你最好的测试它。举例来说,如果你有怪物服务器,43M的记录是什么,你不会得到与分区那么多(但你应该得到改善反正)。
  2. 对于这个问题,我会说,第一次查询会快很多。

但是,这将是最好的衡量你的结果,因为它可能取决于你的硬件coonfiguration,索引(使用EXPLAIN来检查,如果你有正确的索引),你的MySQL设置,如查询缓存的大小,和发动机你使用(MYISAM,InnoDB)...