有什么更好的方法可以减少时间复杂度?

时间:2019-12-30 10:02:40

标签: python mysql django database postgresql

我正在使用Python-Django的网站上工作。

人们可以访问此网站并进行测验。

会有用户表,我认为其中会有5000-6000个条目。

另一个问题表,其中包含大约40,000至50,000个问题。

(会有更多表(例如8到10),但条目数不会超过2000)

用户可以访问我的网站,选择问题编号(例如50)并可以开始测验。

现在这50个问题将从我的数据库中随机选择。

我只尝试了MySQL。从未尝试过PostgreSQL。但是听说过很多关于PostgreSQL的信息,它对数据库中的大量条目很有用。我在MySQL中尝试过,但是时间复杂度很高。

我尝试了什么?

当用户要求测验50个问题时,首先,我调用所有条目并执行随机函数,并从该值中获取50个不同的值,然后取回问题并显示。

我调用所有条目,因为将删除一些问题。它们实际上并没有被删除,但是它们的删除状态将被更改(删除状态0表示显示,删除状态1表示问题已删除),因此不会显示这些问题,因此在查询中我将调用其删除状态为0的条目

请向我提出其他解决此时间复杂性问题的技巧。 我应该坚持使用MySQL还是改用PostgreSQL?

谢谢

编辑1: 正如@strawberry所说的那样,数据集很小,因此数据库的选择无关紧要。 我将使用MySQL

由于时间的复杂性,这就是我所做的

我不允许共享整个代码,所以这里只是一小部分

def findrandom(request):
    aa = list(Question.objects.filter(del_status = 0).values())

    x = len(aa)

    listss = random.sample(range(1, int(x), 50)

    finalList = []

    for i in listss:
        asd = {}
        asd['id'] = aa[listss[i]]
        finalList.append(asd) 

    data = {
        "Question" : finalList,
    }
    return render(request, 'abcd.html', data)

这不是确切的代码,因为我不允许分享,但是它与更改某些名称的位置最接近。

0 个答案:

没有答案