Questions tagged «mysql»

MySQL的所有版本(不是Microsoft SQL Server)。如果与此问题相关,还请添加特定于版本的标记,例如mysql-5.7。

1
MySQL中的朋友关系
我正在MySQL中建立一种友谊关系,其中的朋友关系是相互的。如果A是B的朋友,则B是A的朋友。如果用户之一结束友谊,则关系下降。我想学习哪种方法更好。 我有一个正在运行的系统; user ----------- userid p.k name friends ------- userid friendid primary key (`userid`,`friendid`), key `friendid` (`friendid`) 1 2 2 5 1 3 To get all of my friends; SELECT u.name, f.friendid , IF(f.userid = $userid, f.friendid, f.userid) friendid FROM friends f inner join user u ON ( u.userid = …

1
空间索引可以成为多列索引的一部分吗?
这里的手册非常不清楚,甚至没有提供一些示例SQL语句:http : //dev.mysql.com/doc/refman/5.6/en/column-indexes.html 重述该问题的另一种方法是: 我们知道我们可以有一个包含多列的索引。如果这些列的索引属于不同类型怎么办?说第一列是空间,另一列是fulltextsearch,等等。我们可以在mysql中这样做吗?(奖金:如果您碰巧知道,我们可以在mongodb中这样做) 假设您有一张myisam桌子 它具有包含点的LATLONG列 它具有FULLTEXT列,其中包含“业务”中的单词 您要先按LATLONG查询,然后在匹配的LATLONG中要基于FULLTEXT列进行过滤。 我想您将需要多列索引。 但是,SQL命令是什么? 众所周知,如果可能的话,mysql将始终首先使用fulltextsearch索引。 该查询: SELECT BusinessID as ID , 111151.29341326*SQRT(pow(-6.186751-X(LatLong),2)+pow(106.772835-Y(LatLong),2)*0.98838574205337) AS Distance from tableauxiliary use index (LatLong_2) WHERE MBRContains( GeomFromText ( 'MULTIPOINT(-6.1934985598076 106.76604791159,-6.1800034401924 106.77962208841)' ), Latlong)=1 AND Prominent >15 AND MATCH FullTextSearch AGAINST ('sea*' IN BOOLEAN MODE) ORDER BY Distance LIMIT …
8 mysql  index 


3
适当的多语言模式,还是矫kill过正?
更新2:我实际上已经使用了它,经过几次调整后,它很棒。这是我关于其实际设计并在实践中的文章:http : //tim.hithlonde.com/2013/lemon-schema-works/ 我正在构建一个Web应用程序,并且希望它支持多种语言。此结构包含两个组件: 用词条连接语言环境(“英语”,“荷兰语”等),并用Rosetta Stone连接词条和特定语言的词条。 按页面对术语进行分组。我不想通过页面上可能需要的30多个术语来选择SELECT term1,term2等。我想问一下他们所连接的页面。 这是我建议的表结构(请注意,所有ID之间都具有关系/索引以进行非常有效的查询): * locale * id * value //English, Deutch, etc// * terms * id * value //In English// * page * id * value //Think add entry, menu// * page_group //group all terms to a page, for easy pulling// * id * …

1
InnoDB-在ibdata1文件和ib_logfile0上的高磁盘写I / O
服务器规格:具有以下信息的VPS model name : Intel(R) Xeon(R) CPU E5649 @ 2.53GHz MemTotal: 2058776 kB MemFree: 244436 kB 我们正在运行Invision Power Services的IP.Board,正在使用 innodb_file_per_table并已重新加载数据库以减小ibdata1的大小。但是,尽管ibdata1尺寸减小了,但最近我们仍然遇到CPU和I / O使用率高的问题。 根据我的检查,我认为这是由上较高的I / O使用率引起的ibdata1。以下是我使用pt-ioprofile -cell sizes(在Percona ToolKit中)获得的数据。基本上,这是30秒内收集的I / O总量。 # pt-ioprofile -cell sizes Fri Jul 20 10:22:23 ICT 2012 Tracing process ID 8581 total pread read pwrite fsync open …
8 mysql  innodb 

2
用mysqldump和USE ..缓慢的MySQL数据库导入
我在MySQL innoDB中大约有12个表,其中一个表中有1100万条记录。 我使用此命令来备份内容: mysqldump -u [USERNAME] -p [DBNAME] | gzip > [/path_to_file/DBNAME].sql.gz 然后使用以下命令在新服务器上导入内容: USE [DBNAME]; SOURCE [/path_to_file/DBNAME].sql; 这是我的痛苦(每个查询的时间都在增加!): 我该怎么做才能加快速度?我的mysqldump命令出问题了吗?

1
MySQL用户对存储过程的权限
我创建了一个简单的存储过程: mysql> CREATE FUNCTION hello (s CHAR(20)) -> RETURNS CHAR(50) DETERMINISTIC -> RETURN CONCAT('Hello, ',s,'!'); Query OK, 0 rows affected, 1 warning (0.00 sec) 但是无法运行它: mysql> SELECT hello('world'); ERROR 1370 (42000): execute command denied to user ''@'localhost' for routine 'test.hello' 我的用户名是否可能为空字符串?如何创建用户并授予特权?我可以授予用户数据库中所有实体的所有特权吗?

3
为什么这个mysql用户不能使用密码登录?
在phpmyadmin中,我使用密码和所有特权创建了一个名为“爱德华”的用户: 但是,当我尝试通过phpmyadmin登录时,提示“无法登录MySQL服务器”。 当我尝试在命令行(Windows 7)上登录时,它也不允许我: 但是,如果我没有密码登录,我会进入: 只给我看两张桌子 我确定密码是正确的,并且我创建了多个用户,无论我赋予他们多少权限,这些用户都无法使用他们的密码登录。 我如何才能使该用户只能使用密码登录并查看所有数据库? 附录: 这是phpmyadmin的屏幕截图,显示“爱德华”拥有与“根”一样多的权限:

1
我想了解IOPS(每秒I / O)及其对DB CRUD操作的影响
我想为运行InnoDB Engine的数据库(MySQL)获得专用服务器。InnoDB容量中有此选项,您可以在其中定义IOPS。假设我有一个允许100 IOPS的SATA 72K-RPM HDD。这是否意味着我的数据库只能每秒运行100个并发SQL查询,还是意味着1秒钟内可以进行100次单次读取或写入?数据库如何处理每秒在类似硬件上启动的3000个查询?我有点困惑,所以请为我解释一下。我想在专用服务器上执行200多个查询。

2
一个表中如何有两个自动增量列?
我有一个MySQL表,其中包含有关公司发票的信息。但是,该公司有两个分支机构,每个分支机构都有唯一的发票顺序;可以说是“意甲”和“乙”。但是,这是一家公司,我不想创建两个发票表。相反,我不知何故要为一个表具有两个不同的自动增量。我知道从技术上讲这是不可能的,但是我想这是其他人以前解决过的问题,所以我想知道是否有众所周知的“解决方案”吗? 我现在正在执行的操作不是使用主键作为发票编号(这是理想的选择),而是使用带有发票ID的辅助列,该ID手动增加(使用PHP脚本,但是仍然不是自动的) ),请查看该特定系列的最新发票。 这是我当前的设置: CREATE TABLE `invoices` ( `id` mediumint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, `invoicenumber` mediumint unsigned NOT NULL, `branch` enum('A','B') NOT NULL, `date` date NOT NULL, `client` varchar(100) NOT NULL ) COMMENT='' ENGINE='InnoDB'; 要检查最新发票,我运行: SELECT MAX(invoicenumber+1) AS new_invoice_number FROM invoices WHERE branch = 'A'

3
如何创建用户定义的聚合函数?
我需要一个MySQL不提供的聚合函数。 我希望它具有MySQL的SQL风格(即不是C语言)。 我该怎么做呢?我所坚持的是创建一个聚合函数-这些文档似乎没有提到它是如何完成的。 所需的product功能用法示例: mysql> select product(col) as a from `table`; +------+ | a | +------+ | 144 | +------+ 1 row in set (0.00 sec) mysql> select col, product(col) as a from `table` group by col; +-----+------+ | col | a | +-----+------+ | 6 | 36 | | …

2
SQL查询以获取每周的最后一天
使用MySQL,我需要查询具有datetime字段的表。我需要计算特定一周的所有记录。使用date_format(colname,“%Y%V”)返回星期#,但是我需要该周的最后一天(每月01-28 | 29 | 30 | 31)。 输出例如 COUNT(*)| 日期 11 | 2012-01-07 22 | 2012-01-14 123 | 2012-01-21 帮帮我? 注意:在我的情况下,一周的最后一天是星期日。
8 mysql 

4
无法以root用户身份授予特权
由于存在一些问题,我决定重新创建除之外的所有用户root@localhost。这可以正常工作,但是新创建的用户无权执行任何操作。我想要的只是简单地将所有权限授予某个本地IP上的root用户。我root@localhost试过了 CREATE USER 'root'@'10.0.3.210'; GRANT ALL ON *.* TO 'root'@'10.0.3.210'; 第一个命令有效,第二个命令失败并显示消息 ERROR 1045 (28000): Access denied for user 'root'@'localhost' 我不明白为什么root@localhost不能做所有事情,我确定我没有弄乱它的特权。从 SHOW GRANTS FOR 'root'@'localhost' 我懂了 Grants for root@localhost GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, REPLICATION SLAVE, …

4
MySQL子查询速度大大降低,但它们独立运行良好
查询1: select distinct email from mybigtable where account_id=345 需要0.1秒 查询2: Select count(*) as total from mybigtable where account_id=123 and email IN (<include all from above result>) 需要0.2秒 查询3: Select count(*) as total from mybigtable where account_id=123 and email IN (select distinct email from mybigtable where account_id=345) 花费22分钟和90%的时间处于“准备”状态。为什么要花这么多时间。 表是在MySQL 5.0上具有320万行的innodb

1
MySQL按表读取/写入
我正在优化数据库。本质上,我试图在数据库中找到写入最多和读取最多的表。之后,我将把这些表符号链接到单独的驱动器中。 有没有一种方法可以跟踪每个表的活动?就像在后面的IOPS中一样,每个表的写入,读取次数是多少?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.