As you have 1k sensors and each generates data every 5 seconds, seems to me like nice example where to use frameworks like Akka to process many requests and avoid many threads issue
Once your processing stage looks like be optimized, you correctly wrote about NoSQL. Guys in comments mentioned missing index but as you have only one table this could cause that every
insert
to your table triggers index recalculation for all data. This can kill your app's throughput.You have a lot of options how to solve this issue. Divide tables to the last contain newest data or use two tables, one for reading and queries and second for writing along with bulk insert from second to first - this is definitely fast using cut off indexes. There is well know problem that you can optimize you storage for massive reading or massive writing, not for both.
Or you can look at NoSQL, especially Redis come into my mind, look at their data type http://redis.io/topics/data-types-intro
Redis supports long list by nature. As it does not support any querying in the mean of
SELECT ... FROM ... WHERE ...
you would have to provide your own indexes and caches in order to provide your required queries. If you would be interested how to use key:value store, just look at their twitter demo. Twitter must solve same issues like you do.
This brings me to my last point. If you want to provide better scalability and you do not know how, just look at facebook, twitter or netflix architecture.