我想知道通过OPTIMIZE TABLE tbl_name在 MySQL 服务器中运行查询可以获得哪些好处[真正实用] 。
我检查了一次,发现运行后,下一次 DB 命中需要很长时间,可能是因为片段的重定位左右,但随后的命中显示了某种性能,我不确定查询缓存是否执行此技巧单独使用优化或优化就可以做到这一点。
如果可能的话,任何人都可以指导我一些实际的性能差异值,以便我可以进一步研究,因为在我们的项目中使用 MySQL 越来越重要。
我想跟踪用户的更改历史记录,以便每当他更改他的个人资料时,我都需要获取旧数据并存储在历史记录中并使用新数据进行更新。
我可以使用 aselect来获取旧数据,然后使用insert历史记录,最后使用 aupdate来更改数据。
我可以在不使用存储过程、触发器等的情况下在 mysql 的单个查询中拥有所有这些吗?例如使用锁等。如果是这样,请给我一个小样本。
除了在下面给定的 SP 中使用 IN 子句之外,还有没有更好的方法来编写 SQL。当我使用这个 IN 子句时,由于 User 和 Member 表中涉及大量或记录,我的性能下降。
CREATE PROCEDURE [dbo].[sp_MemberIdsFromUserIds] @dtUserIds UNIQUETABLE readonly
AS
BEGIN
SELECT userID,
Memberid
FROM Member
INNER JOIN USER
ON UserMemberID = MemberiD
WHERE userID IN (SELECT UniqueId
FROM @dtUserIds)
END
Run Code Online (Sandbox Code Playgroud)
请提出替代方案,因为我对写作 SP 没有完整的了解
我想使用 2 个查询,一个列出具有以下信息的给定表的所有外键,Schema name, foreign table name另一个列出所有主键。
这个列出主键的查询是否正确:
select syssc.name as schemaname , cast(c.name as varchar(255)) as foreign_table ,
cast(p.name as varchar(255)) as primary_table
from sysobjects f
inner join sysobjects c on f.parent_obj = c.id
inner join sysreferences r on f.id = r.constid
inner join sysobjects p on r.rkeyid = p.id
inner join syscolumns rc on r.rkeyid = rc.id and r.rkey1 = rc.colid
inner join syscolumns fc on r.fkeyid = fc.id and r.fkey1 = fc.colid
left join syscolumns …Run Code Online (Sandbox Code Playgroud) sql-server-2008 foreign-key database-design sql-server metadata
我想确认以下关于基本 SQL 查询的信息:
float 和 real 数据类型不能与 sql 中的 equals 和 not equals 运算符一起使用。如果是这样,那么我还可以对这些数据类型使用什么运算符。
不允许基于 BLOB 和 XML 列进行过滤。那么我们是否应该禁用基于这些数据类型的任何搜索,还有其他无法从sql查询中过滤的数据类型吗?
[编辑] 3. 另外,我可以对时间戳数据类型使用什么样的运算符。