事实:
mysql> SHOW CREATE TABLE data \G; *************************** 1. row *************************** Table: data Create Table: CREATE TABLE `data` ( `data_id` bigint(20) NOT NULL AUTO_INCREMENT, `rel_id` int(11) NOT NULL, `some_text` varchar(255) DEFAULT NULL, `lang` varchar(3) DEFAULT NULL, `some_bool` tinyint(1) DEFAULT NULL, `some_filter` varchar(40) DEFAULT NULL, `ano_filter` varchar(10) DEFAULT NULL, `day` int(11) DEFAULT NULL, PRIMARY KEY (`data_id`), KEY `cnt_idx` (`some_filter`,`ano_filter`,`rel_id`,`lang`,`some_bool`,`some_text`,`day`) ) ENGINE=MyISAM AUTO_INCREMENT=1900099 DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
查询
mysql> EXPLAIN SELECT `some_text` , COUNT(*) AS `num` FROM `data` WHERE `lang` = 'en' AND `day` BETWEEN '1364342400' AND '1366934399' GROUP BY `some_text` ORDER BY `num` DESC \G; *************************** 1. row *************************** id: 1 select_type: SIMPLE table: data type: index possible_keys: NULL key: cnt_idx key_len: 947 ref: NULL rows: 1900098 Extra: Using where; Using index; Using temporary; Using filesort 1 row in set (0.00 sec)
mysql> SELECT `some_text` , COUNT(*) AS `num` FROM `data` WHERE `lang` = 'en' AND `day` BETWEEN '1364342400' AND '1366934399' GROUP BY `some_text` ORDER BY `num` DESC LIMIT 5 \G; ... *************************** 5. row *************************** 5 rows in set (24.26 sec)
你知道怎么加快那东西的速度吗?“
由于索引中的列顺序,没有使用索引。索引从左到右工作。要使该查询使用索引,需要lang,day
的索引。
问题内容: 我有类似的东西 如果我只是这样做,它将以ID升序返回行。有没有一种方法可以按照IN语句中给出的顺序取回行? 问题答案: 您应该使用“ ORDER BY FIELD”。因此,例如:
问题内容: 这两个查询在具有1000万行的表上运行缓慢。我想知道为什么为什么从mysql保留所有insert,update和delete更新的计数器变得不容易? 有没有办法改善这个查询?我使用了说明,但并没有太大帮助。 问题答案: 正如cherouvim在评论中指出的那样,它取决于存储引擎。 确实会保留表行的计数,并且由于MyISAM支持的唯一锁是表锁,因此可以保持准确。 但是支持事务,因此需要进
本文向大家介绍MySQL选择按值计数?,包括了MySQL选择按值计数?的使用技巧和注意事项,需要的朋友参考一下 您可以为此使用功能。让我们首先创建一个演示表 使用insert命令在表中插入一些记录。查询如下- 使用select语句显示表中的所有记录。查询如下- 以下是输出 这是选择按值计数的查询 以下是输出
问题内容: 从MySQL中的多个表中选择时,以下两个查询均返回相同的结果集。 这些查询中的一个比另一个查询 更好 或更有效吗?根据我在一个小的数据集(每个表中约有2000行)的测试中,它们都在大约相同的执行时间上返回了相同的结果集。 查询1: 查询2: 问题答案: 它们是相同的,但是语法不同。因此,您不应该期望这两种语法之间的性能差异。但是,建议使用最后一种语法(ANS SQL-92语法),有关更
问题内容: 我想找到更快的:结构与数组。因此,我编写了一个GO代码,在其中我将4个int值(1、2、3和4)写入一个结构的成员,然后写入一个长度为4的数组。我试图找出写入所需的时间。 案例1:首先,我将值写入结构,然后写入数组。在这里,我发现数组比结构要快。 情况2:其次,我将值写入数组,然后写入结构。在这里,我发现结构比数组要快。 为什么性能取决于我首先写的内容?我首先写的那个似乎慢一些。为
基本上,对于每个user_id,我需要类似的东西, 我想最终的结果只是返回所有的总数。