假设,如果您的 INT 列已经有 40 亿行,那么将该列转换为 BIGINT 的过程需要多长时间?我知道这将取决于服务器资源,但我只想有一个大概的想法,比如服务器有 8GB RAM 4CPU。
如果你确定你会在某个时候达到 INT 的极限,尽管几年之后,直接进入 BIGINT 是否有意义?
我有一个包含 156 列的表,其中大多数是 VARCHAR(1000) 或 TEXT。
现在,当将数据输入这样一行时,我得到
mysql_error() = 行大小太大 (> 8126)。将某些列更改为 TEXT 或 BLOB 或使用 ROW_FORMAT=DYNAMIC 或 ROW_FORMAT=COMPRESSED 可能会有所帮助。在当前行格式中,768 字节的 BLOB 前缀被内联存储。
我正在考虑将表类型更改为 MyISAM。它在共享服务器上,但可以设置私有 MySQL 实例。
从这里:
InnoDB 实现事务、外键和关系约束,MyISAM 没有。
我仍然可以在 MyISAM 上使用 JOINS 等,对吧?我没有在这些表上实现任何其他复杂的东西。
Postgres在单个表中有 32T 的限制,但如果表已分区怎么办 - 现在每个分区是 32T 吗?
我希望在我们的生产站点中添加一项新功能,该功能将向用户显示他们最近查看的 25 个项目。我已经根据项目类型将每个视图记录到各种表中,但是查询这些表的并集效率不高,因为这些表(在某些情况下)有数百万行,对于新表,我是只关注用户最近的25次浏览。
我最初的想法是创建一个新表并编写额外的代码来向该表添加(和删除)记录,条件如下:
1) user_id 和 item_id 的每个组合应该是唯一的;即对于给定的 user_id,任何项目都不应出现超过一次
2) 为了保持表小/快,为给定用户存储的项目不应超过 25 个。一旦 user_id 有 25 个项目,只要为该 user_id 添加新视图,就会删除最旧的视图。
所以为了做到这一点,我需要查询给定的组合是否存在,然后如果给定的 user_id 有 25 行,则需要删除用户最旧的行。
我认为可能有更好的方法来做到这一点,我调查了 MySQL“视图”,但从我读到的内容来看,基于现有表创建视图听起来效率不高,因为它会使用所有行但没有索引。
有没有更好的方法来做到这一点(也许是触发器?或者 mysql 模式中的某种方式?)或者我最好的选择是“蛮力”;创建额外的代码来管理新表,在我已经必须记录每个视图的代码之上?
这是新表的基本架构:
| Field | Type
+-----------------------+-----------------
| customer_id | int(11)
| item_id | int(11)
| view_date | datetime
提前感谢您的任何意见或建议。
最近我发现 MySQL 有一个offset
特性。我一直在尝试查找有关偏移结果的文档,或者偏移量和限制变量之间的差异,但我似乎找不到我要找的东西。
假设我在一个表中有 10.000 行,我想要 25 个结果,来自第 1.000 行。就我目前为止,我可以同时做这两个以获得相同的结果:
SELECT id,name,description FROM tablename LIMIT 1000,25
SELECT id,name,description FROM tablename LIMIT 25 OFFSET 1000
我想知道的是两者之间的区别。
- 这实际上是这样做的还是我的理解有误?
- 在较大的表中慢/快
- 当我这样做时,偏移量的结果是否会改变
WHERE column=1
(比如列有 >100 个不同的值) - 当我这样做时偏移的结果是否会改变
ORDER BY column ASC
(假设它具有随机值)
我感觉偏移量跳过了在数据库中找到的前 X 行,而忽略了排序和位置。
目前是否有计划标准化一种限制查询返回的结果数量的最佳方法?
Is there an ANSI SQL Alternative to the MYSQL LIMIT keyword?列出了用不同语言处理此行为的各种方法:
DB2 -- select * from table fetch first 10 rows only
Informix -- select first 10 * from table
Microsoft SQL Server and Access -- select top 10 * from table
MySQL and PostgreSQL -- select * from table limit 10
Oracle -- select * from (select * from table) where rownum <= 10
我不经常玩数据库,所以我在这里说的是无知,但这似乎是一个非常重要的功能 - 至少重要到当我看到它由供应商决定时我会挠头。