The other thing that occurred to me.... this indexing time would depend on the number of objects, not their size, so it should be the same for the internally-stored mp3 and an hypothetical externally-stored mp3 with internal meta...
No, for two reasons. Firstly Zope does seek over the pickle data, reading only the FileStorage transaction metadata. However it will be faster if those pickles are small, since more than one transaction metadata block will fit in one disk block. Further, it is more likely that the disk blocks will be available faster due to read-ahead in your OS. Secondly the internally-stored files will consume *more* ZODB objects - one object for each 64k of file size. This is necessary for the memory-reduction tricks mentioned earlier in the thread.