我在我的C#应用程序中发布了一个相对简单的SQL查询:
select * from myTable where myValue > 10 order by myValue;
表中有1.8亿行,myValue上有一个索引。在MySQL工作台中运行查询时,它将在0.015秒内返回前1000行。
当我在C#中运行查询时,它会超时。
我怀疑MySqlDataReader和/或MySQL引擎试图在返回之前找到所有匹配的行。
我真正想要的是从我的C#代码中一次读一行。我想把这个查询排队起来,一次从最上面的行中取出行,因为它们是需要的。
在MySQL中是否有合适的编程模式?
该表在InnoDB表中。这里有一些可能会有帮助的信息。
EXPLAIN SELECT COUNT(*) AS y0_ FROM db.table this_ WHERE this_.id IS NOT NULL;
+----+-------------+-------+-------+---------------+---------+---------+------+---------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | re
我有两个DB表,每个表都包含电子邮件地址
One is mssql with 1.500.000.000 entries
One is mysql with 70.000.000 entries
我现在要检查两个表中有多少个相同的电子邮件地址。即在两个表中存在相同的地址。
哪种方法最快: 1.下载两个数据集作为csv,将其加载到内存中,并在程序代码中进行比较2.使用DB查询来获得重叠的结果集。
如果2更好:建议的SQL查询是什么?
让我们举一个简单的例子,其中有两个表:
USERS (Id, Name, City)
PLAYERS (Id_Player, Number, Team)
我必须使用循环中的子subselect进行查询,其中的子subselect总是相同的,所以我想将它分成两个查询,并将子subselect放在循环之外。
我来解释。什么工作,但它不是优化的:
for($i=0;$i<something;$i++)
{
$res2=mysql_query("SELECT Team from PLAYERS WHERE Number=$i
AND Id_Player IN (
使用PHP-1,我从mySQL表中选择了一些包含特定日期的列哈希的行。所有这些行都是独一无二的。另外,在表2中,我做了同样的事情,我得到了特定一天的列散列,同样也是uniques。
使用PHP,我如何知道表一中有多少散列出现在表二上?
$first_visits=mysql_query("SELECT hash AS first_visit
FROM audience
WHERE DATE( TIMESTAMP ) = '2016-03-28'");
$visits=mysql_query("SELECT DISTINCT (
hash
) AS v
我在MySQL中有一个数据集,其中使用限制已经是一个昂贵的查询,而且查找结果的数量也很昂贵。因此,我希望避免执行另一个查询来查找结果的数量。我不能使用MYSQL_CALC_FOUND_ROWS,因为限制在子查询中:
SELECT * FROM items,
(
SELECT
item_id
FROM
(etc)
WHERE
some.field=<parameter>
AND (etc)
GROUP BY (something)
ORDER BY (something_else) DESC
LIMIT 15
) subset
WH
我有一个MySQL(InnoDB)表,其中有很多行(几百万行)。我正在做这样的查询:
SELECT SQL_CALC_FOUND_ROWS `a`
FROM `logs`
WHERE `connect_timestamp` > 10000
ORDER BY `connect_timestamp` DESC
LIMIT 1
我有一个普通的索引添加到列中,但是像这样的查询需要20秒,有没有更好的方法?
我在一个批处理过程中使用Node.js和MySQL。该过程并发地进行大量查询,并由多个作业组成。我注意到update语句时不时地起作用。
UPDATE `Configuration` SET `Value`='2015-06-08 11:35:00' WHERE `ID`=6
我打开了通用日志,在那里找到了查询,但是表中的数据没有改变。查询大约每5分钟在作业结束时运行一次。但其他工作仍在继续进行查询。
例如: jobA正在进行大量的查询。同时,jobC从配置表中进行选择。然后,jobC执行一系列与配置表无关的查询。一旦jobC完成了一系列操作,它就会对配置表运行两个查询: SE
如何限制MySQL中所有行的百分比?
我试过这个:
SELECT * FROM table_name
ORDER BY column_name ASC
LIMIT (SELECT ROUND(COUNT(id)*0.25) FROM table_name)
我还试图将查询SELECT ROUND(COUNT(id)*0.25) FROM table_name保存为变量,但问题是相同的。我知道限制只需要编号,但我不知道表中有多少行才能给出特定的数目来限制。如果限制是不可能的,如何无限制地做到这一点?
我只需要选择表中所有行的前25 %。
我有一个表,其中包含以下字段: userid、logintime、birthdate
我需要让所有的用户在生日X和Y与最近登录的第一个排序。
SELECT *
FROM table
WHERE birtdate BETWEEN x AND Y
ORDER BY logintime DESC
如果我只在birtdate上定义了一个索引,mysql将使用filesort对结果进行排序,这是我想要避免的(表越来越大,查询越来越流行)。
定义一个索引( logintime,birthdate)对我来说没有意义,因为logintime甚至不在WHERE子句中(我只通过birthdate限制结果集)
我目前正在使用mysql
我有两个名为person和zim_list_id的表,这两个表都有超过200万行
我想使用zim_list_id表更新person表
我使用的查询是
update person p JOIN zim_list_id z on p.person_id = z.person_id
set p.office_name = z.`Office Name`;
我还在zim_list_id表和person表上创建了索引,我执行的查询是
create index idx_person_office_name on person(`Office_name`);
create ind
我有一个大约有17M行的MySQL表,在这个表中,我最终执行了大量聚合查询。
在本例中,假设我有index_on_b、index_on_c、compound_index_on_a_b、compound_index_on_a_c
我尝试运行一个查询解释
EXPLAIN SELECT SUM(revenue) FROM table WHERE a = some_value AND b = other_value
我发现选择的索引是index_on_b,但是当我使用查询提示时
SELECT SUM(revenue) FROM table USE INDEX(compound_index_on_a_b
我在mysql表测试中有几百万条记录。
其中一列(TRIAL_TIME)的测试表将划时代的时间存储为BIGINT。会触发一个sql查询,该查询使用GROUP BY子句对TRIAL_TIME上的数据进行分组。
查询类似于以下内容。
SELECT SUM(A1), COUNT(B1)
from TEST
WHERE <some clause>
GROUP BY TRIAL_TIME DIV 300000
ORDER BY <some column>;
300000在上面的查询中表示我想用什么时间对数据进行分组。例如,如果我想在1分钟前将数据分组,我将使用60000。
现在,我在Mysql中有3列的表。
DocId Int
Match_DocId Int
Percentage Match Int
我正在存储文档id和它的几乎重复的文档id和百分比,这表明两个文档的匹配有多紧密。
因此,如果一个文档有100个几乎重复的,那么对于特定的文档,我们有100行。
目前,这个表有10亿多个记录,总共有1400万份文件。我预计文件总数将达到3000万份。这意味着,我的表存储了接近重复的信息,将有超过50亿行,可能会更多。(与总文档集相比,几乎重复的数据呈指数增长)
以下是我的几个问题:
获取mysql表中的所有记录需要花费大量时