小编Meh*_*diB的帖子

表示3个值集的最佳方法

假设我有100组3个值.第一个值是时间,第二个值是x位置,第三个值是y位置.例如,这将是一个超过100秒的点的xy位置.我有PHP背景.在PHP中,我会使用这样的3D关联数组:

position["time"]["x"]["y"]
Run Code Online (Sandbox Code Playgroud)

所以我可以在特定时间访问x,y值.你会如何在c#中做到这一点?我认为像列表和字典这样的泛型会做到这一点.但我不知道如何为3D数据集实现键值.

c# generics associative-array multidimensional-array

8
推荐指数
2
解决办法
1154
查看次数

MySQL - 使用LEFT JOIN会产生意想不到的结果

我有两个表订购产品和产品原料.这是表结构:

有序产品表:

+-----+---------+-----------+----------+--------------+
| id  | orderid | productid | quantity | productgroup |
+-----+---------+-----------+----------+--------------+
| 117 | 1016186 |    265385 |        5 | Main         |
| 118 | 1016186 |    407454 |        6 | Main         |
| 119 | 1016186 |    975045 |        7 | Main         |
| 120 | 1016186 |    975046 |        8 | Main         |
+-----+---------+-----------+----------+--------------+
Run Code Online (Sandbox Code Playgroud)

productsinstocks表:

+----+---------+-----------+----------+
| id | stockid | productid | quantity |
+----+---------+-----------+----------+
| 20 |  903958 |    265385 |      200 …
Run Code Online (Sandbox Code Playgroud)

mysql select left-join

3
推荐指数
1
解决办法
74
查看次数

MySQL-有效插入70000个随机唯一字符串

我正在做一个项目,在该项目中,我应该至少生成70000个包含8个字母数字字符的代码。密码必须唯一。目前,我正在使用php通过以下功能生成这些代码:

function random_unique_serial($length, PDO $conn) {
    $codeCheck=FALSE;
    while (!$codeCheck) {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
        $charactersLength = strlen($characters);
        $randomCode = '';
        for ($i = 0; $i < $length; $i++) {
            $randomCode .= $characters[rand(0, $charactersLength - 1)];
        }
        $sql = "SELECT * FROM codes WHERE code=:code";
        $st = $conn->prepare($sql);
        $st->bindvalue(":code", $randomCode, PDO::PARAM_STR);
        $st->execute();
        $count = $st->rowcount();
        if ($count==0) {
            $codeCheck=TRUE;
        } else {
            $codeCheck=FALSE;
        }
    }
    return $randomCode;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,此代码检查数据库中是否生成了每个代码,以确保它不是重复的。这在理论上应该起作用。但是,这非常慢,并且导致请求超时。我尝试增加执行时间,但这也无济于事。

然后,我决定使用数据库端方法并使用此解决方案: 使用MySQL生成随机且唯一的8个字符串

这也非常慢,并且某些生成的代码长度少于8个字符。

您能否提出更好的解决方案?

php mysql random

3
推荐指数
1
解决办法
1076
查看次数

DISTINCT ON 对于 300000 行来说很慢

我有一个名为资产的表。这是 ddl:

create table assets (
    id            bigint                                 primary key,
    name          varchar(255)                           not null,
    value         double precision                       not null,
    business_time timestamp with time zone,
    insert_time   timestamp with time zone default now() not null
);

create index idx_assets_name on assets (name);
Run Code Online (Sandbox Code Playgroud)

我需要为每个资产名称提取最新的(基于 insert_time)值。这是我最初使用的查询:

SELECT DISTINCT
    ON (a.name) *
FROM home.assets a
WHERE a.name IN (
                 'USD_RLS',
                 'EUR_RLS',
                 'SEKKEH_RLS',
                 'NIM_SEKKEH_RLS',
                 'ROB_SEKKEH_RLS',
                 'BAHAR_RLS',
                 'GOLD_18_RLS',
                 'GOLD_OUNCE_USD',
                 'SILVER_OUNCE_USD',
                 'PLATINUM_OUNCE_USD',
                 'GOLD_MESGHAL_RLS',
                 'GOLD_24_RLS',
                 'STOCK_IR',
                 'AED_RLS',
                 'GBP_RLS',
                 'CAD_RLS',
                 'CHF_RLS',
                 'TRY_RLS',
                 'AUD_RLS',
                 'JPY_RLS',
                 'CNY_RLS',
                 'RUB_RLS',
                 'BTC_USD'
    )
ORDER BY …
Run Code Online (Sandbox Code Playgroud)

sql postgresql greatest-n-per-group distinct-on postgresql-performance

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