mysql表中有一个表,它有大约176万条记录,而且还在增长。似乎它拥有的记录越多,获得的速度就越慢。在下面运行一个简单的查询大约需要65秒钟。Date_run是一个时间戳字段。我想知道这是否会使跑步速度变慢。有任何建议,我可以调整在选项文件,以使这个宝宝更快?
select *
from stocktrack
where date(date_run) >= '2014-5-22'
and date(date_run) <= '2014-5-29'
mysql版本5.6
Windows 8.1 64位
Intel Core i7-4770
我试图理解为什么MySQL没有使用完整的索引来回答查询。让我解释一下。我正在通过MySQL版本5.1.73-1 (Debian)使用imdb数据库.我用列(itid_inf25_mid_ndx,info(25),movie_id)在表movie_info_idx上创建和索引“info_type_id”。列info_type_id和movie_id是整数( NULL),info是文本类型,因此每个索引条目都需要4+27+4 =35个字节。句子输出:
EXPLAIN
SELECT movie_id
FROM movie_info_idx
WHERE info_type_id = 101
AND i
这个MySQL查询的最佳复合索引是什么?
SELECT
c.id, c.customer_id, c.service_id, c.origin_id, c.title, c.state, c.start_date_time
FROM
calendar_events c
WHERE
c.customer_id = 1234
AND c.state IN ('unconfirmed', 'confirmed')
AND c.start_datetime BETWEEN '2016-10-15 00:00:00
以下查询在MySQL中是否有效:
SELECT * FROM table WHERE field & number = number;
# to find values with superset of number's bits
SELECT * FROM table WHERE field | number = number;
# to find values with subset of number's bits
...if是否已为该字段创建索引?
如果没有,有没有办法让它运行得更快?
表结构:
+-------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| total | int(11) |
我正在对MySQL集群中的表执行一些删除操作,并不断地碰到“太多活动扫描”错误。我知道Johan的文章,但是在本例中,参数已经设置得非常高--我假设错误发生是因为我访问系统的方式。我想修复我的代码,不再调整我的数据库配置!
我正在运行的查询大致如下:
delete from mytable where mytable.id in (<big long list of 1000s of IDs>)
我还是把它分给小块好吗?这会有助于避免错误吗?
“太多的活动扫描”实际上意味着什么?在这种情况下,我如何避免它(而不将参数设置为更高的值)?
你好,我有一个问题
SELECT * FROM customers WHERE height > 180 AND height < 200
下面是将explain应用于它的结果:
mysql> explain SELECT * FROM customers WHERE height > 180 AND height < 200;
+----+-------------+-----------+------+---------------+------+---------+------+-------+-------------+
| id | select_typ
我想我已经知道答案了,但是...
给定以下3条MySQL语句:
SELECT SQL_CALC_FOUND_ROWS title FROM STUFF LIMIT 1000000, 1;
SELECT SQL_CALC_FOUND_ROWS title FROM STUFF LIMIT 1;
SELECT title FROM STUFF;
这三种语言在性能上有显著差异吗?
我有两张桌子如下所示
我在两个表上都有如下所示的综合索引:
users表有一个复合索引:(login_type_id,language_id,enabled,level) 地址表有一个复合索引:(user_id,city_id,enabled)
我想执行以下查询
select * from users u
left join address adr
on u.id = adr.user_id
where u.login_type_id = 1
and u.langauge_id = 1
and u.enabled = true
and adr.city_id in (1,2,3,4,
当我在一个包含2200万行的表上运行以下查询时,它需要20秒才能运行:
select p.*,
(select avg(close)
from endOfDayData p2
where p2.symbol = p.symbol and
p2.date between p.date - interval 6 day and p.date
) as MvgAvg_X
from endOfDayData p
where p.symbol = 'AAPL'
表结构如下:
mysql> desc endOfDayData;
+--------+---------------+--
我对MySQL相当陌生,在项目中我正在生成MySQL请求,其中一个值可以是不同的预定义范围,其中一个特殊范围仅由值0组成
我想知道,我是否需要处理这个特殊的案子
BETWEEN 0 AND 0,让MySQL优化它
对请求的解释
EXPLAIN SELECT SUM(*) FROM my_table WHERE field = 0
EXPLAIN SELECT SUM(*) FROM my_table WHERE field BETWEEN 0 AND 0
EXPLAIN SELECT SUM(*) FROM my_table WHERE field BETWEEN 0 AND 10
都给出了相
CREATE TABLE student (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(128) DEFAULT NULL,
age int(11) NOT NULL,
update_time timestamp NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
我有一个从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表中存在一个索引。
基于我所读到的关于这个主题的内容,我的想法是,完整的索引扫描只会减慢查询的速度,而执行完整的表扫描和忽略索引将比在本例中执行完整的索引扫描更好。但是,可视化计划显示,查询使用的是完整索引扫描,而不是全表扫描。为什么?
在运行Windows7 7的笔记本电脑上用12+百万行在DB上编写一些查询--内存为4GB的家庭(大学教授,没有研究预算)。我正在考虑将以下列作为utf8_bin添加到模式中,并在它们上放置索引。这会给我更好的查询性能吗?下面这样的简单查询需要100+秒:
SELECT 'Aug' as Month,
SUM(volume) AS Volume
FROM moving_avgs
WHERE data_date between 20120801
AND 20120831;
我要添加的列和索引:
年
星期一,星期二,韦德,清
mysql (innodb)是否支持更高的查询速率(每秒查询次数),如(A)或(B)?
(A) SELECT * FROM t1 WHERE pkey BETWEEN 2000 and 2001 AND x > 300
在(A)中,主键选择800行的范围。"x“没有索引。有一个范围查找和一个长度为200kb的连续读取。
(B) (SELECT * FROM t1 WHERE pkey BETWEEN 2000 and 2001 AND x > 300) UNION ALL (SELECT * FROM t1 WHERE pkey BETWEEN 3000 and 3001
我正在使用mysql作为我的数据库。我有20,000条记录,共30列。我正在使用6个列(txn_date、v_name、transaction_status、sid、pnum、txn_num)创建一个复合索引。当我对以下在where子句中有6列的查询进行解释时,解释是使用index直到某个txn_date,然后根据explain命令的输出使用where条件
SELECT * FROM transactions
WHERE txn_date between '2021-01-10' and '2021-01-19'
and v_name ='Vo