I would suggest you first get familiar with some elementary concepts:
- "Core Data in FMDB" is impossible. FMDB is a wrapper around the SQLite api, not around Core Data. Core Data is an object graph, not a database.
- If you want to use Core Data, throw out FMDB (which I recommend).
- In Core Data the fetched results controller uses a cache mechanism that makes tables very fast and efficient with resources.
- In Core Data's managed object model editor, you can easily mark attributes to indexed for faster fetches.
- Core Data has many more mechanisms to boost performance, such as fetch batch sizes, faulting and fetch request templates.
- Core Data does not use foreign keys, but so-called relationships. The foreign-key concept is completely hidden and just an implementation detail. You should understand the difference between a relational database (SQLite) and an object graph (Core Data).
Read all about it here.