我正在将我的.NET/MSSQL迁移到RoR/MySQL/EC2/Ubuntu平台。在我将所有现有数据转移到MySQL中后,我发现MySQL查询速度非常慢,即使是像查询select count(*) from countries这样的超基本查询,它也只是一个国家/地区表,只包含大约200条记录,但查询需要0.124ms。这显然是不正常的。
我是MySQL的新手,谁能告诉我可能的问题是什么?或者安装MySQL后我应该打开的任何初始优化按钮?
我知道完全通配符搜索(例如:LIKE '%word%')会导致全表扫描。
当我使用“喜欢”或“不喜欢”时,MySQL是否聪明到只扫描结果,而不是扫描整个表?
例如,假设我有一个从1000000行中选择10行的查询。查询类似于select * from table where id <= 10 and description NOT LIKE '%word%'。MySQL是否足够聪明,只扫描这10行结果?
(我的查询非常不同,但这是它的要点:我希望在大表中的结果集中使用NOT。假设所有的东西都有索引。客户端版本“14.14disrade5.7.29,用于Li
我意识到关于堆栈溢出的问题以前已经被问过了,但只有一个模糊的结论:
所以它又来了。
表A:有一个可以为空的整型列,以及一个索引。查询:
SELECT *
FROM table
WHERE column IS NULL
LIMIT 10;
是否使用索引,或者mysql是否会执行全表扫描,直到找到10个条目?
我在MySQL中有一个表,我想通过执行多个select语句从表中选择不重叠的相等部分来并行查询该表,例如:
1. select * from mytable where col between 1 and 1000
2. select * from mytable where col between 1001 and 2000
...
问题是,在我的例子中,列是varchar。在这种情况下,我如何拆分查询?
在Oracle中,我们可以结合使用NTILE和rowids进行操作。但我没有在MySQL的情况下找到类似的方法。这就是为什么我的想法是散列列的值,并根据我想要的相等部分的数量来修改它。或者
全,
我有一个MYSQL表,它有一个用timestamp数据类型定义的列"DT_Created“。我想要编写一个select查询,以按以下方式检索时间戳:
Sat, MM/DD/YYYY HH:MM:SS AM CST
Lengthy Explanation:
Day, Month/Date/4 Digit Year Hours:Minutes:Seconds AM or PM TimeZone
我有一个从MySQL中的小表中提取的查询:
SELECT C.cid, C.email, R.flight_number
FROM customer C INNER JOIN reservation R ON C.cid = R.cid
WHERE C.email LIKE '%d.com';
在email列的customer表中存在一个索引。
基于我所读到的关于这个主题的内容,我的想法是,完整的索引扫描只会减慢查询的速度,而执行完整的表扫描和忽略索引将比在本例中执行完整的索引扫描更好。但是,可视化计划显示,查询使用的是完整索引扫描,而不是全表扫描。为什么?
我有一个包含大约500,000条记录的mySQL表。该表的大小约为45MB。第一次执行查询时,每次都需要近20秒,但随后的查询速度很快。如果我注销,然后重新登录,查询仍然很快。如果我4-5小时后再来。同样的查询又慢了一次。
查询非常简单。
$query = "select * from tableName where uniqueID='$passedID' ORDER BY tableName ASC";
$result = mysql_query($query) or die('Query failed: ' . mysql_error())
Mysql版本- 5.5.39
我有两张表Bugs和BugStatus
我想获取给定用户的Open和Closed错误计数。
我当前正在使用此查询
SELECT BugStatus.name,
count(BugStatus.name) AS count
FROM bugs
INNER JOIN BugStatus ON bugs.status = bugstatus.id
WHERE bugs.assignee='irakam'
GROUP BY bugstatus.name;
现在让我们假设我的Bugs表中有100,000行。这个查询是否仍然有效,或者我应该
我有一个具有lat,long坐标的零售位置数据的sql表。我的应用程序查询表以使用python来提取数据。以下是一些样本数据:
table1
id name lat long
1 post 37.788151 -122.407570
2 sutter 37.789551 -122.408302
3 oak 37.815730 -122.288810
我有一个点坐标37.785980和-122.410851,我想从表中找出附近的行,比如在距离坐标的0.5英里半径内。
业绩问题。由于性能不佳、向客户端应用程序发送数据的时间过长以及存储/内存问题,我无法查询
我有一个正在缓慢增长的表,名为people
目前有50,000条记录,每月增加约5000条。
这是某人写的(不是我!)
他没有添加任何索引,
并且有许多查询使用非pk where子句。
例如:
select * from people where email = 'person@gmail.com';
根据mysql命令行客户端,这在"0“时间内执行...
1 row in set (0.00 sec)
我也尝试过,试图进行一个较慢的查询:
# attempt!
select * from people where email like 'Name%';
我在MySQL (5.5.31)中有一个表,它有大约20M行。以下查询:
SELECT DISTINCT mytable.name name FROM mytable
LEFT JOIN mytable_c ON mytable_c.id_c = mytable.id
WHERE mytable.deleted = 0 ORDER BY mytable.date_modified DESC LIMIT 0,21
正在导致全表扫描,并解释说type是ALL,而额外信息是Using where; Using temporary; Using filesort。解释结果:
id sele
我有以下问题。
SELECT * FROM video LEFT OUTER JOIN comments ON (video.id = comments.video_id)
WHERE comments.posted_by_user = 1234 OR video.id in (1, 2, 3, 4)
我有video.id、comments.posted_by_user和comments.video_id的索引。但是,mysql会对视频表执行全表扫描,这会耗费大量时间。使用UNION而不是LEFT OUTER JOIN可以加快查询速度,但这不是一个选项,因为查询是由django ORM生成的。
嗨,我对MySQL指数有一定程度的了解。
创建表时,我可以创建一个索引
CREATE TABLE Product (
-> ID SMALLINT UNSIGNED NOT NULL,
-> ModelID SMALLINT UNSIGNED NOT NULL,
-> PRIMARY KEY (ID),
-> INDEX (ModelID)
在创建表之后添加索引
CREATE INDEX index_name
ON table_name (column_name)
还可以通过以下方式更改索引
ALTER TABLE
有没有办法执行select查询,在表中搜索给定的单词,如果找到,则退出查询,不再继续计数?
例如,我有一个表(t1),其中包含以下值:
id tag tagdate
1 my 1-1-2012
2 name 1-1-2012
3 you 1-1-2012
4 foo 1-1-2012
5 make 1-1-2012
6 ir 1-1-2013
7 too 1-1-2013
.. .. ........
这里是MySQL noob。
我正在尝试运行下面的语句到
EXPLAIN SELECT * FROM actor as a
INNER JOIN film_actor as fa on a.actor_id = fa.actor_id
INNER JOIN film AS f ON fa.film_id = f.film_id;
输出是
id| select_type| table | partitions | type | possible_keys | key | key_len | ref | ro
我有一个SQL select查询需要调优。在查询中,有一个通过4个表形成的View In from子句。当执行此查询时,将对所有这4个表进行全表扫描,这会导致CPU峰值。这四个表在其上构建了有效的索引。
该查询如下所示:
SELECT DISTINCT ID, TITLE,......
FROM FINDSCHEDULEDTESTCASE
WHERE STEP_PASS_INDEX = 1 AND LOWER(COMPAREANAME) ='abc' ORDER BY ID;
这些点表示有更多的列。这里的FINDSCHEDULEDTESTCASE是四个表的视图。
谁能
我正在尝试创建一个select查询,但是当我使用explain查询时,mysql总是在extra中使用"using filesort“。
我尝试使用最简单的查询,但问题并没有消失。我的表'Partidas‘的结构是:
CREATE TABLE IF NOT EXISTS `Partidas` (
`IdUsuario` int(11) NOT NULL,
`IdPartida` int(11) NOT NULL,
`TipoPartida` tinyint(4) NOT NULL,
`Facil` tinyint(1) NOT NULL DEFAULT '
如果大型(Ish) MySQL表只有一个匹配结果,那么将查询限制在一个结果记录上会提高性能吗?
例如
select * from people where name = "Re0sless" limit 1
如果只有一条记录使用该名称?如果name是主键/设置为unique呢?更新查询是否值得,或者收益是最小的吗?