技术使用:MySQL 5.1和PHP 5.3 我只是为我正在撰写的网站devise一个新的数据库。 我正在研究现在存储Lat和Lng值的最佳方法。 在过去,我一直在使用DECIMAL,并使用PHP / MySQLselectforms: SQRT(POW(69.1 * (fld_lat – ( $lat )), 2) + POW(69.1 * (($lon) – fld_lon) * COS(fld_lat / 57.3 ), 2 )) AS distance find最近的匹配地点。 开始阅读更多关于新技术,我想知道如果我应该使用空间扩展。 http://dev.mysql.com/doc/refman/5.1/en/geometry-property-functions.html 虽然信息很薄弱,但是如何存储数据还是有问题的。 而不是使用DECIMAL,我现在将使用POINT作为数据types? 另外,一旦存储为POINT,只需要从中获取Lat Lng值,以便我想将其绘制在地图上,还是应该再次将经纬度值存储为DECIMALS? 我知道我应该使用PostGIS作为这里的大多数post说我只是不想学习一个新的数据库,但! 跟进 我一直在玩新的POINTtypes。 我已经能够使用以下添加Lat Lng值: INSERT INTO spatialTable (placeName, geoPoint) VALUES( "London School of Economics", GeomFromText( 'POINT(51.514 […]
让我首先说我已经看过很多类似的问题,但是它们都与Timestamp和DateTime Timestamp字段types没有索引有关。 至less这是我的理解。 众所周知,DateTime有一定的优势。 把它们搁置一会儿,并假设表的引擎是InnoDB有10+ million records ,当条件基于: 带索引的DateTime int与索引 换句话说,最好把date和时间存储为int DateTime或UNIX时间戳? 请记住,不需要使用任何内置的MySQL函数。 更新 使用MySQL 5.1.41(64位)和1000万条logging进行testing,初始testing显示int有显着的速度差异。 使用两个表, tbl_dt与DateTime和tbl_int与int列。 几个结果: SELECT SQL_NO_CACHE COUNT(*) FROM `tbl_dt`; +———-+ | COUNT(*) | +———-+ | 10000000 | +———-+ 1 row in set (2 min 10.27 sec) SELECT SQL_NO_CACHE COUNT(*) FROM `tbl_int`; +———-+ | count(*) | +———-+ | 10000000 | +———-+ […]
我有一个MySQL表,索引INT列将为90%的行为0。 如果我改变这些行使用NULL而不是0,他们会被排除在索引,使索引约90%更小?
我有一个MySQL数据库。 我将数据库存储在数据库中,并且只对数据库执行1个查询, 但是我需要这个查询以超快的速度执行 ,这就是返回一个方框中的所有家庭的地理纬度和经度。 SELECT * FROM homes WHERE geolat BETWEEN ??? AND ??? AND geolng BETWEEN ??? AND ??? 如何最好的方式来存储我的地理数据,以便我可以执行此查询显示地理定位框中最快的所有家庭? 基本上: 我使用最好的SQL语句执行此查询最快? 有没有其他方法存在,可能甚至不使用数据库,我查询盒装地理位置范围内的家园的结果最快的方式? 万一它有帮助,我已经包括我的数据库表架构如下: CREATE TABLE IF NOT EXISTS `homes` ( `home_id` int(10) unsigned NOT NULL auto_increment, `address` varchar(128) collate utf8_unicode_ci NOT NULL, `city` varchar(64) collate utf8_unicode_ci NOT NULL, `state` varchar(2) collate utf8_unicode_ci NOT […]
我尝试从我的MySQL数据库中的服务中保存用户的名字。 这些名称可以包含像🙈😂😱🍰这样的emojis(仅举例) search一下后,我发现这个链接到本教程的 stackoverflow 。 我按照步骤,它看起来像一切正常configuration。 我有一个数据库(charset和collation设置为utf8mb4(_unicode_ci)),一个名为TestTable的表,还configuration了这种方式,以及一个“文本”列,configuration这种方式(VARCHAR(191)utf8mb4_unicode_ci)。 当我尝试保存表情符号时出现错误: Example of error for shortcake (🍰): Warning: #1300 Invalid utf8 character string: 'F09F8D' Warning: #1366 Incorrect string value: '\xF0\x9F\x8D\xB0' for column 'Text' at row 1 我能够正确保存的唯一表情符号是太阳☀️ 虽然我没有尝试所有这些都是诚实的。 有什么我在configuration中丢失? 请注意:所有的保存testing都不涉及客户端。 我使用phpmyadmin手动更改值并保存数据。 所以客户端的正确configuration是在服务器正确保存emojis 之后我会照顾的。 另一个旁注 :目前,当保存emojis我得到上面的错误,或不会出现错误, Username 🍰的数据将被存储为Username ???? 。 错误或没有错误取决于我保存的方式。 当通过SQL语句创build/保存时,我用问号保存,当编辑内联时,我用问号保存,当使用编辑button进行编辑时,我得到错误。 谢谢 编辑1:好,所以我想我发现了问题,但不是解决scheme。 它看起来像数据库特定variables没有正确更改。 当我在我的服务器上以root身份login并读出variables(全局)时: 使用的查询: SHOW VARIABLES […]
这是查询: SELECT * FROM table WHERE accountid = 1 ORDER BY logindate DESC LIMIT 1 现在,如果我在字段中添加了多列的索引: INDEX(accountid,logindate) MySQL会利用这个多列索引吗? 或者它不会使用它,因为一个字段在where子句中,另一个在order语句中? 或者,只要按照多列索引的顺序使用这些字段,这个问题就不重要了吗?
在文档中没有明确提到( http://dev.mysql.com/doc/refman/6.0/en/drop-table.html )。 我问,因为我刚刚在一个Rails项目中看到一个好奇的数据库迁移,开发人员在删除表之前删除了所有的索引,似乎没有必要。
这与我最后一个问题有关 。 我在列表中创build了一个新的列,其中一个用于组合views_point (每增加100个视图)和一个用于views_point ( views_point年 – 月 – date小时)发布的date来创build一些唯一值。 这是我的新表格: CREATE TABLE IF NOT EXISTS `listings` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `type` tinyint(1) NOT NULL DEFAULT '1', `hash` char(32) NOT NULL, `source_id` int(10) unsigned NOT NULL, `link` varchar(255) NOT NULL, `short_link` varchar(255) NOT NULL, `cat_id` mediumint(5) NOT NULL, `title` mediumtext NOT NULL, […]
我只使用phpMyAdmin,但后来我偶然发现看起来很有前途的MySQL Workbench。 我不知道是否有人尝试过,可以给你的想法相比,phpMyAdmin。 它可以完全取代phpMyAdmin?
花了多年的时间主要与MS SQL Server(以及SQL Server Management Studio的常见任务)一起工作,现在我开始使用MySql。 到目前为止,我一直在使用MySQL Workbench ,我一般对此感到满意。 但是,我想要为某些命令(例如,来自该列表的命令)分配自定义键盘快捷键 。 例如,我宁愿坚持'F5'的MS-SQL方法来执行查询,而不是按'修改器+返回'。 我还没有遇到一个简单的方法来做到这一点。 我的问题是: 这在MySQL Workbench中可能以某种方式(例如,额外的插件)? 如果没有,MySQL Workbench的其他select是否提供这种function? 环境: Ubuntu 12.04 LTS,32位 MySQL服务器版本5.5.24-0ubuntu0.12.04.1 MySQL工作台版本5.2.38,修订版8753 干杯!