Best practices from a performance POV


Hi all,

I’m on a bit of a crossroad right now, so before I do anything drastic (i.e. split up tables into smaller ones) I’m hoping to get some input on what’s best performance-wise.

Right now I have a master table with 40-50 columns. I think about 1/3 requires simple number input and the rest either performs pretty basic lookups or calculations. Specifically, I’m wondering the following:

  • Say you have a column with formula “X*Y + X”, where X is a value that you get from filtering another table. Given that there are 2 instances of X, the filter request has to be executed twice per row. Therefore, I figured it would be more efficient to lookup X in a separate column and then refer to this new column in my formula (thereby saving 1 filter request). However, this assumes that minimizing these kinds of requests is more efficient than minimizing columns. Thoughts on this?
  • How much performance impact do rows with a lot of empty columns (with and without formulae) have?
  • Does hiding columns from view decrease their impact?
  • And this probably only the Coda staff knows, might some of these concerns become trivial in the somewhat near-future because of architectural improvements?

Looking forward to hearing any thoughts and experiences regarding these matters.

Kind regards,




I found out today that if I replaced all formulae of the form…



expr1 && expr2

…it completely solved the severe performance problem I was experiencing.

Prior to the change it would take 41 seconds to enter a value into a field. (It would carry on showing the old value and I’d see the message “Calculating”. 41 seconds later the value I entered would finally appear.)

After the change the new value appears in just over a second. It totally turns things around and makes an unusable application usable. :slight_smile:



Well spotted, @Nick_Milner.

We’d benefit greatly from a reference page on tips like that. Maybe use this thread as input from users then bundle them into a help page?

I guess the question would be repeatability of the results. I.e., in Nick’s case it’s not obvious why changing syntax would make that much difference, maybe the fact his project has multiple grouped and aggregate views?



I’ve also reproduced this on a much simpler application with just 3 tables and no groups. In the simpler example it reduced data entry time from around 4 seconds to nothing. :slight_smile:

1 Like


That’s peculiar. I was hoping we wouldn’t have to worry about that level of detail, but it’s good to know nonetheless. Keep 'em coming!