我有我的MySQL数据库经度和纬度坐标(GPS数据)。 它目前存储为: column type ———————— geolat decimal(10,6) geolng decimal(10,6) 问题:我是否真的需要像decimal(10,6)那样大的数据types才能正确存储坐标数据? 由于我有经度和纬度的综合指数,这个指数的规模是巨大的。 如果我可以在不损害任何东西的情况下做到这一点,那就太好了。
在Hive中,当我们做一个查询时(比如: select * from employee ),我们不会在输出中得到任何列名(比如我们在RDBMS SQL中得到的名字,年龄和薪水),我们只得到这些值。 在执行任何查询时,有没有办法让列名与输出一起显示?
请解释什么是元组在sql?谢谢..
什么是数据库约束的明确定义? 为什么约束对数据库很重要? 什么是约束的types?
我最近从Postgres转到Solr,在我们的查询中看到了大约50倍的速度。 我们运行的查询涉及多个范围,我们的数据是车辆清单。 例如:“查找里程数<50,000,$ 5,000 <价格<$ 10,000,使=马自达的所有车辆…” 我在Postgres的所有相关列上创build了索引,所以它应该是一个相当公平的比较。 查看Postgres中的查询计划,尽pipe它仍然只是使用单个索引,然后扫描(我假设,因为它不能使用所有不同的指数)。 据我了解,Postgres和Solr使用模糊的类似数据结构(B-tree),并且它们都将数据caching在内存中。 所以我想知道这么大的性能差异是从哪里来的。 体系结构有什么不同可以解释这一点
我在看CouchDB,它在关系数据库上有许多吸引人的特性,包括: 直观的REST / HTTP界面 容易复制 数据存储为文档,而不是标准化的表格 我明白,这不是一个成熟的产品,所以应该谨慎使用,但我想知道它是否实际上是一个可行的替代RDBMS(尽pipe介绍页面另有说明 – http://couchdb.apache.org/docs /intro.html )。 在什么情况下,CouchDB比RDBMS(如MySQL)更好地select数据库,例如在可扩展性,devise+开发时间,可靠性和维护方面。 仍然有一些情况下RDBMS仍然是正确的select? 这是一种select,还是混合解决scheme更可能成为最佳实践?
什么命令删除SQLite中的所有表? 同样,我想放弃所有索引。
在是否应该使用NULL的参数之外:我负责使用NULL表示“丢失或从未input”数据的现有数据库。 它与空string不同,意思是“用户设置了这个值,而且他们select了”空“。 项目的另外一个承包商坚定地坚持“不存在NULL,我从来不使用NULL,也不应该使用NULL”。 然而,让我感到困惑的是,由于承包商的团队确认了“缺less/从不进入”和“有意清空或由用户指示为未知”之间的区别,他们在其代码和存储过程中使用单个字符“Z”在整个数据库的其余部分表示“丢失/从不进入”,其含义与NULL相同。 尽pipe我们的共享客户已经要求改变这一点,而且我也支持这个请求,但是团队认为这是DBA中比我更先进的“标准实践”。 他们不愿意单独根据我的无知请求更改为使用NULL。 那么,谁能帮我克服我的无知? SQL专家中是否有任何标准或一小组个人,甚至是一个大声的提倡使用“Z”代替NULL的声音? 更新 我有一个承包商的回应补充。 以下是当客户要求删除特殊值以允许在没有数据的列中允许NULL时他所说的内容: 基本上,我devise的数据库,以尽可能避免NULL。 这是理由: • string[VARCHAR]字段中的NULL是不必要的,因为空(零长度)string提供完全相同的信息。 • 整数字段(例如,ID值)中的NULL可以通过使用永远不会出现在数据中的值来处理(例如,对于整数IDENTITY字段,则为-1)。 date字段中的NULL可能很容易造成date计算的复杂性。 例如,在计算date差异的逻辑(如[RecoveryDate]和[OnsetDate]之间的天数差异)中,如果一个或两个date都为NULL,则逻辑将爆炸 – 除非为两个date为NULL。 这是额外的工作和额外的处理。 如果[RecoveryDate]和[OnsetDate](例如“1/1/1900”)使用“default”或“placeholder”date,math计算可能会显示“exception”值 – 但date逻辑不会被炸毁。 传统上,NULL处理是开发人员在存储过程中犯错的区域。 在我作为DBA的15年中,我发现尽可能避免NULL。 这似乎validation了对这个问题的主要负面反应。 而不是应用可接受的6NF方法来deviseNULL,特殊值用于“尽可能避免NULL”。 我以开放的态度发表了这个问题,很高兴我对“NULL是有用的/ NULL是邪恶的”辩论有了更多的了解,但是现在我很舒服地将“特殊值”方法标记为完全无稽之谈。 一个空的(零长度)string提供完全相同的信息。 不,它不; 在我们正在修改的现有数据库中,NULL表示“从不input”,空string表示“input为空”。 传统上,NULL处理是开发人员在存储过程中犯错的区域。 是的,但成千上万的开发人员已经犯了数千次错误,而避免这些错误的经验教训和注意事项是已知的并且是有logging的。 正如这里所提到的那样:无论你接受还是拒绝NULL,缺失值的表示都是一个解决的问题 。 没有必要发明一种新的解决scheme,因为开发人员继续制造易于克服(易于识别)的错误。 作为一个脚注:我已经是DBE和开发人员20多年了(这当然有足够的时间让我知道数据库工程师和数据库pipe理员之间的差异)。 在我整个职业生涯中,我一直都是在“有用”的阵营,虽然我知道有几个非常聪明的人不同意。 我对“特殊价值”方法持怀疑态度,但对于“如何避免以正确方法行事”这一学者坚持不懈,坚持不懈。 我总是喜欢学习新东西,20年后我仍然有很多东西要学。 感谢所有为此作出贡献的人士提供有用的讨论。
我很惊讶,这还没有发布。 你在Postgres知道的任何有趣的技巧? 晦涩的configuration选项和缩放/性能特技是特别受欢迎的。 我敢肯定,我们可以击败相应的MySQL线程上的9条评论:)
如何监视SQL Server数据库对表的更改而不使用触发器或以任何方式修改数据库的结构? 我的首选编程环境是.NET和C#。 我希望能够支持任何SQL Server 2000 SP4或更新版本。 我的应用程序是另一家公司产品的螺栓式数据可视化。 我们的客户群是数千人,所以我不希望在每次安装时都要求我们修改第三方供应商的表格。 通过“更改到表”我的意思是更改表数据,而不是更改表结构。 最终,我希望更改在我的应用程序中触发事件,而不必每隔一段时间检查一次更改。 根据我的要求(无触发器或架构修改,SQL Server 2000和2005),最好的方法似乎是在T-SQL中使用BINARY_CHECKSUM函数。 我打算实施的方式是这样的: 每X秒运行以下查询: SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM sample_table WITH (NOLOCK); 并将其与储值进行比较。 如果值已更改,请使用查询逐行浏览表: SELECT row_id, BINARY_CHECKSUM(*) FROM sample_table WITH (NOLOCK); 并比较返回的校验和与存储的值。