在接近限制的数据库中查找列的工具?
Posted
技术标签:
【中文标题】在接近限制的数据库中查找列的工具?【英文标题】:Tool to find columns in a database approaching limit? 【发布时间】:2011-08-30 16:47:31 【问题描述】:谁能给我指出一个工具、脚本、方法、查询等,以帮助我找到数据库中所有值接近列大小限制的列?
例如,如果我碰巧有一列是 smallint(8) - 可以存储在该列中的最大值为 32767。如果该表中的任何行具有一个值,即...超过该列限制的 90%,我想知道。
谢谢。
【问题讨论】:
根据您的数据库的大小,这将是一个相当耗费资源的操作 - 每个表每列一个表扫描(尽管您可能可以发挥创意)! 绝对是资源密集型的!我希望将其作为每月分析类型的操作运行,而不是定期运行:-) 【参考方案1】:对于简单的整数:
SELECT * FROM a WHERE a.anumber > (32767 * 0.9)
对于文本,您可以使用长度函数。
SELECT * FROM a WHERE LENGTH(a.stringfield) > 20;
请注意,使用函数会扼杀在该字段上使用索引的任何机会。
【讨论】:
Johan,虽然我很欣赏快速回答...我希望我在问题中明确表示我正在寻找一种工具或脚本来自动搜索整个数据库中的所有列。我的目标是不根据列的大小为数据库中的每一列创建这些单独的查询,然后运行它。这将是拥有工具或脚本的好处。 酷,但你确实说过:“谁能给我指出一个工具、脚本、方法、查询” @Keylan 你可以使用 Information_Schema 来生成像 Johan 展示的那样的查询 这是一个潜在的 SQL 注入噩梦,但您可以使用动态 SQL 和 information_schema 中的数据生成所需的查询。有时间我会试试看的。 嘿伙计,如果您可以通过单个查询找到“数据库中所有值接近列大小限制的列”,我很乐意使用它! :-) 我认为这不需要任何用户输入 - SQL 注入的可能性在哪里?我很高兴看到你最终制作出 Johan 的作品!以上是关于在接近限制的数据库中查找列的工具?的主要内容,如果未能解决你的问题,请参考以下文章