相关疑难解决方法(0)

MySQL快速从600K行中选择10个随机行

如何最好地编写一个从总共600k中随机选择10行的查询?

mysql sql

438
推荐指数
11
解决办法
43万
查看次数

使用Doctrine获取随机记录

我想知道如何从一个集团中随机抽取一些成员,但我不知道最好的方法是什么,我认为ORDER BY RAND()不是最好的选择,因为一个集团可以有超过100,000个成员,执行此类型查询可能会很慢.

我发现这种方式使用SQL,但我不知道如何在DQL中做同样的事情:我如何优化MySQL的ORDER BY RAND()函数?

php random dql doctrine-orm

10
推荐指数
2
解决办法
1万
查看次数

Symfony2 Doctrine从一个类别中获取随机产品

我有以下数据库方案:

table 'products'
id
category_id
Run Code Online (Sandbox Code Playgroud)

当然还有一个类别表,只有一个id.

数据看起来像这样:

Products
--------------------
| id | category_id |
--------------------
| 0  | 1           |
| 1  | 1           |
| 2  | 1           |
| 3  | 2           |
| 4  | 2           |
| 5  | 1           |
--------------------
Run Code Online (Sandbox Code Playgroud)

我想选择一个类别(例如类别1),因此我在product-repository类中选择该类别中的所有行:

return $this
    ->createQueryBuilder('u')
    ->andWhere('u.category = :category')
    ->setMaxResults(1)
    ->setParameter('category', $category->getId())
    ->getQuery()
    ->getSingleResult()
;
Run Code Online (Sandbox Code Playgroud)

我现在如何选择随机产品?另外:是否有可能通过关系来解决这个问题?

我在实体"类别"和"产品"之间有一个OneToMany关系,所以我也可以通过category-> getProducts()得到所有产品......

任何帮助都非常有用,谢谢

php entity doctrine relationships symfony

5
推荐指数
1
解决办法
1万
查看次数

Symfony 学说 DQL 随机结果在查询中使用 MaxResult

如何使用 dql 查询获得随机结果?

这是我的查询:

$firstCategoryId = 50;

$repository = $this->entityManager->getRepository(BaseProduct::class);

        $products = $repository->createQueryBuilder('p')
            ->join('p.categories', 'c')
            ->where('c.id = :categoryId')
            ->setParameter('categoryId', $firstCategoryId)
            ->getQuery()
            ->setMaxResults(4)
            ->getResult();
Run Code Online (Sandbox Code Playgroud)

这总是让我返回前 4 个产品。假设 ID 为 50 的类别有 100 多种产品。我想要的是从 ID 为 50 的类别中随机查询 4 ​​篇文章。但是如何?这可能吗?当然,我可以不设置 Max Result 而不是用 PHP 来设置……但由于性能原因,这不是一个好的解决方案。

php mysql symfony doctrine-orm

0
推荐指数
1
解决办法
1403
查看次数

标签 统计

php ×3

doctrine-orm ×2

mysql ×2

symfony ×2

doctrine ×1

dql ×1

entity ×1

random ×1

relationships ×1

sql ×1