sampling speed

what is the maximum sampling speed of arduino uno?

For the internal ADC you can make about 8200 samples per second with analogRead.
You can set a prescaler and from my head you can go up to approx 100.000 per second.
(note that would fill all your RAM in a dozen millisec)

Drawback is that you get more and more noise and the accuracy stops being useful.

When making max amount of samples you do not have time to process, store or communicate them.
So you should balance the sample time and processing time.

By using asynchronuous calls to the ADC you can process the previous sample when a new one is made in the background.

There is also the option to use a (fast) external ADC with SPI. That might give less noise while still being fast.

What do you want to do with the samples?
What is your project about?

I built the "Girino" project (poor man's oscilloscope) and got good data with a prescaler of 4. I only used 8 bits of accuracy, but at 13 clocks per sample and a prescale of 4, that gives 16000000 / 52, which is 307692 Hz. I couldn't get it to work any faster than that.

Like Robtillart says, I filled up my RAM buffer in about 6 ms. But that was enough for what I needed to do. I could capture data at that rate, but no way could I process the data that fast.

Update: I'm pretty sure I could get my Girino project to work with a prescale of 2, which would double the sample rate to 615384 Hz. It is theoretically possible to sample the pin at prescale of 1, which would be a sample rate of 1.23 MHz. Actually storing the samples at that rate would be a pretty good trick, but based on the assembly code the compiler generated for This code, it might be possible.