我正在将我的.NET/MSSQL迁移到RoR/MySQL/EC2/Ubuntu平台。在我将所有现有数据转移到MySQL中后,我发现MySQL查询速度非常慢,即使是像查询select count(*) from countries这样的超基本查询,它也只是一个国家/地区表,只包含大约200条记录,但查询需要0.124ms。这显然是不正常的。
我是MySQL的新手,谁能告诉我可能的问题是什么?或者安装MySQL后我应该打开的任何初始优化按钮?
操作系统为ubuntu 16.04
MySQL版本:MySQL Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper
在我的系统中
/etc/mysql/ -> ls
conf.d debian.cnf debian-启动my.cnf my.cnf.fallback mysql.cnf mysql.conf.d
在该文件中,我需要配置以获取通用查询日志和慢查询日志。
我看到有一个很好的选项,如何启用日志慢查询和没有索引的查询:
SET GLOBAL log_queries_not_using_indexes=1;
SET GLOBAL log_slow_queries=1;
好的,好的,但是它们似乎都写入了我在my.cnf配置文件中指定的同一个日志文件:
[mysqld]
long_query_time = 1
log-slow-queries = /var/log/mysql/mysql-slow.log
我使用mysqldumpslow查看最慢的查询,但是我需要做什么才能单独查看那些没有索引的查询呢?
我最近完成了一个PHP应用程序的数据层。在我的数据层中,我有各种方法来执行不同的sql任务,如选择、插入、删除等。我来自.NET背景,我练习打开连接,对连接执行任何操作,然后关闭它们。
在最近的一次代码审查中,我被问到了关于这种做法的问题,一位同事说,最好在应用程序的生命周期内保持连接的开放。他们的推理是,打开/关闭连接是很耗时的。我的论点是,让它们保持开放是消耗资源的。以下是执行select查询的数据层的代码示例。我是PHP的新手,所以我真的没有对这个批评做出回应。有人能对此有什么见解吗?
public static final function executeSelectQuery
如果我运行以下查询:
SELECT `Manga`.`id`, `Manga`.`name` FROM `mangas` AS `Manga` WHERE `Manga`.`id` in
(
SELECT `manga_id` FROM `mangas_genres` where `manga_id` = 1
)
我的计算机没有响应(我只是输入错误)。它无法运行此查询。上面的代码是否无效?请帮帮我。
我认为它是有效的,但它不能运行。我不明白。它肯定是MySQL,我在MYSQL工作台上运行查询(不是在PHP中)我的计算机非常慢(当运行查询时)我的table mangas和mangas_genr
我有一个mysql查询,类似于:
SELECT name FROM table_name WHERE name LIKE '%custom%' limit 10
它从我的自定义表中返回2行。
我想从文本c cu cus cust usto stom tom om m中得到包含任何一个单词的记录。
我尝试了以下查询:
SELECT name FROM table_name WHERE name like '%custom%' OR name REGEXP 'c|cu|cus|cust|usto|stom|tom|om|m' limit 10
上面的
考虑一下,您有一个名为“user”的MySQL表,它有数以百万计的行,其结构如下,并且没有任何索引。
TABLE: user_id (PK) email name signup_date
我们希望执行以下查询:
SELECT user_id
FROM user
WHERE email=’email@bolidea.com’ AND name=’Olivier Cabanes’
MySQL如何处理该查询的速度?
如何提高该查询的性能?
我有一个奇怪的mysql查询速度问题,我正在努力解决这个问题。我将mysql数据库从一台服务器移动到另一台服务器时,本应更加健壮的服务器运行某些mysql查询的速度几乎是原始服务器的4倍。经过几天的调试,我终于发现在存储过程的where子句中使用变量的方式存在巨大的速度差异。下面是一些示例:
快速:
set @s = Concat('delete from visitids where VisitID=''',xVisitID,''' and OrgCode=''',xOrgCode,'''
我正在尝试查看我有哪些查询没有使用索引。
在shell中,我做到了:
> set global log_queries_not_using_indexes=1;
这打开了该选项,正如show global variables所确认的那样。如何设置要将query_log打印到哪个文件?我试着设置了其中的几个,但似乎没有一个是它要写入的。要查看此查询日志,我需要做些什么?