Прежде всего (это мое правильное мнение), я против использования сырого SQL, когда мы уже работаем с средой высокого уровня, такой как Django, если только мы не найдем то, что ищем в среде (Django), поэтому я скорее буду использовать Django для этого вопроса:
отметьте, что этот подход работает только в том случае, если вы установили автоматическое увеличение для вашего ПК и, конечно, если ваши данные согласованы (вы не удаляете записи из таблицы, чтобы быть уверенными, что все идентификаторы автоматически увеличиваются) 1003 *
import random
# Getting the number of rows in the table it's equivalent to do SELECT COUNT(*).
count_record = Table.objects.count()
# Choose 10 (at most) number from the list of all ids.
random_pks = random.sample(range(1, count_record) , min(count_record, 10))
random_list = Table.objects.filter(pk__in=random_pks)
если условие, указанное выше, не выполняется, я думаю, что вы можете сделать это с помощью необработанного SQL-запроса, подобного этому:
query = """SELECT * FROM table
ORDER BY RAND()
LIMIT 10""")
table.objects.raw(query)
о производительности, я думаю, вам нужно время, надеюсь, это поможет.