My goal is to collect the data every one millisecond.
Your code is not doing that though, it's sampling every loop.
MyArray1[MyIndex] = millis();
MyArray1 is an array of ints, you're sticking longs into it. (How does that compile? It does I tried it.)
so am i limited to 2k for data?
Yep, unless you get a Mega which has 8k or one of the 1284-based clones which have 16k.
As AWOL says though, if you are sampling at regular times you don't need timestamps in the first place, that will save a motsa of data space.
MyIndex = MyIndex + 1;
MyIndex never gets reset to 0, so after the first 700 loop()s it's off into la la land.
Rob