W bazie nie masz daty. Musisz dodać pole z datą wstawienia produktu aby w ogóle było to możliwe.
Co do samego samego sortowania, to logicznie jest to niemożliwe jeśli chodzi o ORDER BY, ponieważ najpierw musisz posortować, aby następnie odciąć 10 “górnych” rekordów. Więc sortowane jest całość. To co możesz zrobić, aby proces zoptymalizować, to nałożyć na pole daty indeks, samo to powinno już dać ogromny boost w połączeniu z late row lookup. Jeśli to będzie za mało użyj BD, która oferuje trzymanie indeksów w RAM (odczyty w pamięci operacyjnej są szybsze, niż dyskowe), a jeśli to będzie za mało użyj indeksera np. Solr albo ElasticSearch.
Innym sposobem może być zmiana algorytmu, ale ma to sens tylko jeśli odczytów jest dużo więcej niż zapisów. To znaczy zapamiętać gdzieś np. w statycznym polu aplikacji datę 10 wiersza, a następnie przy dodaniu nowego przeliczać to globalne pole na nowo. Wszystkie odczyty będą korzystać z tego pola wybierając tylko te wiersze (WHERE) są większe od tego pola.