小编Han*_*non的帖子

汽车备件库存数据库模型

我正在建模一个用于车辆备件库存管理的数据库,但我被卡住了......

一些备件可以从套件分解成组件。我想创建一个支持此功能的模型,但不知道如何构建它。

备件可以成套或件发。数据库应该保存关于我们有多少完整集以及有多少被分解成碎片的信息。例如,一套活塞环将有 6 个不同的单独活塞环。

你能为我指出正确的方向吗?

schema database-design

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

如何优化和修复 InnoDB 表?ALTER 和 OPTIMIZE 表失败

我刚刚将我的 Wordpress 数据库切换为使用 InnoDB 引擎。

使用 MyISAM 时,我曾经运行OptimizeRepair table. 但是,对于 InnoDB,这些不起作用。

我手动运行OPTIMIZE TABLE并建议ALTER TABLE但没有一个删除开销。我在mysqltuner显示 14 个碎片表的服务器上运行- 我总共有 14 个表。即使在运行optimizeand 之后alter tables,所有 14 个表仍然碎片化!

我怎样才能正确地OPTIMIZEREPAIRInnoDB 表?

mysql innodb

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

日期上的 SQL 分区,它如何为未来的记录工作?

我正在设置一个新系统,我想对数据进行分区以提高速度。基本上我想做的是拥有一个包含所有最新信息(例如过去 3 个月)的数据库。然后有一些分区表来存储比这更旧的数据。没有选择 mysql 或 sql server express 因为不确定哪一个具有所需的功能。

我已经阅读了一些关于范围分区如何工作的示例,如下所示:

CREATE TABLE SAMPLE_ORDERS 
(
    ORDER_NUMBER NUMBER,
    ORDER_DATE DATE,
    CUST_NUM NUMBER,
    TOTAL_PRICE NUMBER,
    TOTAL_TAX NUMBER,
    TOTAL_SHIPPING NUMBER
)
PARTITION BY RANGE(ORDER_DATE)
(
    PARTITION SO99Q1 VALUES LESS THAN TO_DATE(‘01-APR-2010’, ‘DD-MON-YYYY’),
    PARTITION SO99Q2 VALUES LESS THAN TO_DATE(‘01-JUL-2010’, ‘DD-MON-YYYY’),
    PARTITION SO99Q3 VALUES LESS THAN TO_DATE(‘01-OCT-2010’, ‘DD-MON-YYYY’),
    PARTITION SO99Q4 VALUES LESS THAN TO_DATE(‘01-JAN-2011’, ‘DD-MON-YYYY’),
    PARTITION SO00Q1 VALUES LESS THAN TO_DATE(‘01-APR-2011’, ‘DD-MON-YYYY’),
    PARTITION SO00Q2 VALUES LESS THAN TO_DATE(‘01-JUL-2011’, ‘DD-MON-YYYY’),
    PARTITION SO00Q3 VALUES LESS THAN TO_DATE(‘01-OCT-2011’, ‘DD-MON-YYYY’), …
Run Code Online (Sandbox Code Playgroud)

mysql sql-server partitioning

5
推荐指数
2
解决办法
2578
查看次数

MySQL 中的大小或记录数是否有限制?

MySQL 是否有任何限制,例如大小或记录限制?

我正在处理的数据库中最大的表有超过 150,000 行。MySQL 能解决这个问题吗?

mysql

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

无法在 PostgreSQL 9.1 中禁用 SQL 语句日志记录

我在 Windows Server 2008 R2 上运行 PostgreSQL 9.1。我通过修改 postgresql.conf 文件启用了将 SQL 语句记录到 stderr 日志,但现在我似乎无法在不关闭所有日志记录的情况下禁用日志记录。服务器通过 pg_ctl reload 发送 SIGHUP 信号,并且在每次尝试修复此问题后服务已重新启动。重新启动整个机器似乎也没有帮助。

我当前的 postgresql.conf 中的特定行应该已经完成​​了这个,但不是:

log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
#debug_print_parse = off
#debug_print_rewritten = off
#debug_print_plan = off
#debug_pretty_print = on
#log_checkpoints = off
#log_connections = off
#log_disconnections = off
#log_duration = off
#log_error_verbosity = default
log_hostname = on
log_line_prefix = '%t %a %u %r '
#log_lock_waits = off
log_statement = 'none'  
#track_activities = on …
Run Code Online (Sandbox Code Playgroud)

postgresql logs

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

触发器如何影响 last_insert_id()?

我现在无法对此进行测试,但是我对答案很好奇。

如果我在表 A 上有一个触发器将新记录写入表 B,会LAST_INSERT_ID()告诉我更新的IDA 或 B吗?我对 MySQL 和 PHP 都很好奇,但我的理解是 PHP 只是调用 MySQL 的实现。

如果 B 通常返回 A,我如何获取 B 的最后插入的 ID,反之亦然?

mysql trigger

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

将 MySQL 进程 ID 解析为运行它的页面?

我在 stackoverflow 上问了这个问题,并被指示在这里问这个问题。

我有几个运行 MySQL 查询的 PHP 脚本。有时,它们会导致服务器卡住或被 MySQL 进程阻塞,这些进程需要一段时间,例如格式错误LEFT JOINs等。

当我运行查询以查找有关已运行的所有当前 MySQL 查询的信息时,是否可以将查询 ID 解析为运行它的文件?

有一个查询一直在休眠 3973 没有关于这个查询的信息,所以我试图找到尽可能多的信息?

mysql

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

服务器所有者可以访问我的数据的深度是否有任何限制?

这是我关于 DBA 的第一篇文章。我想从你那里得到一些明确的想法。首先,这听起来像是讨论,但它不是辩论。我正在寻找的可能是“是的,他们可以为所欲为”或“不,不可能!”

最近我完成了一个web应用程序的开发。完成后,我被告知联系服务器区域部门,以便他们可以帮助我上传我的 SQL 数据库、授予权限等。

所以,我这样做了。他们解释了他们是如何工作的,我们同意上传一个非操作版本的数据库,所以我们可以测试权限等。他们告诉我为他们处理数据库的备份。他们会恢复它。第一件事就是在我心里制造噪音。我不应该是恢复备份的人吗?“嗯……我还不是 dba,我相信他们更清楚。” 是我对自己的回答,因为这些可能是他们的做法。

两天后,他们给我发了一封电子邮件,说备份已启动并提供了一些建议。他们需要对我的数据库表进行规范化并拥有正确的索引。

我的反应并不甜蜜。首先,我们都讨论过它,备份不是操作性的......那么,有任何相关结论吗?......顺便说一下,表格都完全规范化了。其次,他们可以进入那么深吗?如果我的数据库中包含的信息很关键怎么办?

非常感谢,希望对这个问题有一些见解。

sql-server-2008 sql-server

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

MySQL order by - 一列以另一列为条件

在 MySQL 中,我有一个表(针对这个问题进行了简化)

CREATE TABLE `projects` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `priority` int(11) DEFAULT '1000000',
  `status` enum('new','in_progress','complete') DEFAULT 'new',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 
Run Code Online (Sandbox Code Playgroud)

我想从按优先级排序的表中进行选择,但将状态为“完成”的行排在最后。

这有效:

SELECT * FROM projects 
order by 
    case 
        when status='complete' then 999999
        when status!='complete' then priority 
    end ASC
Run Code Online (Sandbox Code Playgroud)

但是将 999999 更改为 (select max(priority)+1 from projects) 会产生意想不到的结果,出现状态=完成的结果行第一页的一半。

此外,最后一种方法可能会导致重复计算相同的值。

做这个的最好方式是什么?

mysql order-by

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

一个位置的最小距离;一个点表与一组点 SQL 2012 相比

我试图找到找到一个点到点表的最小距离的最快方法。唯一需要注意的是,我试图找到最小距离的点表是 150K 单点。

或者更好地解释表 A 有 150K 行/点,表 B 1500 点。我想知道表 A 中的每一行与表 B 中列出的所有行的最小距离是多少。

我有一个进行距离计算的函数,作为表 A 的附加列。它只需要很长时间。表 B 有一个空间索引。

这就是我所拥有的:

select a.*, 
       dbo.fxn_distance(geography::STPointFromText('POINT(' + 
       CAST([Long] AS VARCHAR(20)) + ' ' + CAST([Lat] AS 
       VARCHAR(20)) +    ')', 4326)) as DistAway
from Table A a
Run Code Online (Sandbox Code Playgroud)

我的功能:

create function fxn_distance
(@pointTableA geography
)
returns float 
as 
begin

declare @distance float

select top 1 @distance = b.GeoLocation.STDistance(@pointTableA) 
from TableB b  
where geolocation.STDistance(@pointTableA) is not null
order by geolocation.STDistance(@pointTableA)

return @distance
end
Run Code Online (Sandbox Code Playgroud)

对不起,如果我完全是一个新手,我知道解决方案可能很简单,但我无法解决这个问题。所以希望澄清一下:我需要通过表 A …

sql-server t-sql sql-server-2012 spatial

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