我需要使用由MySQL函数生成的随机SHA-1散列值填充PHP表。我正在尝试通过将其拆分成10000个块来优化插入。我的问题是:以下方法是否有效?下面是代码。
//MySQL server connection routines are above this point
if ($select_db) {
$time_start = microtime(true);
//query
$query = 'INSERT INTO sha1_hash (sha1_hash) VALUES ';
for ($i=1; $i<1000001; $i++) {
$query .=
我正在尝试索引mysql innodb-table中的一个文本字段,看起来散列索引是这样的:
CREATE INDEX teksti_index USING HASH ON maili_teksti(teksti(100));
那么,这是否意味着mysql获取字段的前100个字符并计算散列(然后对散列进行索引)。如果我把数字100改成200,索引的大小是一样的吗?
还有..。如果我想优化这种命令,这是一种正确的方法吗:
SELECT count(*) from teksti where teksti='random text';
有没有办法获得种子字段名?我所说的种子是指这样创建的字段: INT NOT NULL AUTO_INCREMENT主键
我计划使用这个(以编程方式获取种子字段名)来提出最快的SQL查询,以获得表中的记录数。
我计划编写的函数是这样的。请填空并提供getSeed函数的内部机制。
function get_record_count ($dbh,$table,$where){
//get the seedfield name in the {table} programmatically
$seed = getSeed($dbh,$table);
$sql = "select count
我在JSON整数数组上设置了一个多值索引的下表:
CREATE TABLE test (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
catIds JSON NOT NULL,
PRIMARY KEY (id),
KEY test_categories ((CAST(catIds AS UNSIGNED ARRAY)))
);
我插入了200,000条记录,例如:
INSERT INTO test (catIds) VALUES('[123, 456]');
...
问题是,在带索引或不带索引的catIds字段上查询此表并不
我使用的是MySQL (MyISAM) 5.0.41,我有以下查询:
SELECT `x`.`items`.id, `x`.`items`.name, COUNT(*) AS count
FROM `x`.`items` INNER JOIN `x`.`user_items`
ON `x`.`items`.id = `x`.`user_items`.item_id
GROUP BY name HAVING count > 2 ORDER BY count DESC
我有大约36,000个用户,175,000 user_items和60,000个项目,这些都是不断增
假设我有一个包含字段a、b、c、local_time和e的mysql innoDB表Foo。Foo具有名为foo_index的复合索引:(a,b,c,local_time)
下面的查询会利用foo_index对local_time进行过滤吗?
SELECT count(*) AS cnt
FROM Foo force index(foo_index)
WHERE (a = '332719'
AND b IN ('2', '-3')
AND c = '1'
AND local_time > '20
在计算*、任何自定义字段( n )或MySQL中的primary id时,性能或后台执行行为是否存在差异?
*在查询中究竟指的是什么,它与这两种方法有什么不同?
SELECT COUNT( * ) FROM t;
SELECT COUNT( id ) FROM t;
SELECT COUNT( n ) FROM t;
更新:
假设在任何记录中,id和n都不是空的。
如何检查表中的字段是否设置为惟一
例如,我有一个名为users的表,该表的字段email集为UNIQUE,字段picture未设置为UNIQUE,在选择之前,我希望在选择字段是否设置为UNIQUE之前检查是否将字段设置为UNIQUE,然后不要执行SELECT操作。
我尝试SELECT,然后计数返回的行数,如果超过1,那么它不是UNIQUE,
"SELECT * FROM table WHERE email='$email'"
//...some mysql php line later
if($count > 1){
//return nothin
我有一个10米长的product表,上面有color (int), price (float), weight (float), unitprice (int),等字段.现在,来自Web的用户动态地生成查询,以便使用随机条件(此处颜色是必须的)和顺序从该表查找数据,例如
select * from product where color=1 and price >5 and price <220 and .... order by unitprice limit 75, 25;
select count(*) from product where color=3 and weig
首先,这不是在问。
假设我有一个带有主键user_id和另一个字段logged_in的users表,该字段描述用户现在是否已经登录。
跑步和跑步有区别吗?
SELECT COUNT(user_id) FROM users WHERE logged_in=1
和
SELECT COUNT(logged_in) FROM users WHERE logged_in=1
查看有多少用户被标记为已登录?也许是索引的不同?
如果有特定于DB的细微差别,我将运行MySQL。
我有一个非常大的表,25+百万条记录。
我需要从它创建一个新表,其中有三个字段是唯一的。
我试过了
SELECT Field1,Field2,Field3, Count(*) FROM `Table` group by Field1,Field2,Field3 having Count(*)>1
我从Mysql中得到错误-内存不足
有没有一种更有效的方法来查找所有具有计数>1的字段的唯一记录,以便我可以进一步处理它们(创建一个新表,等等)?
我不太喜欢SQL,我有以下的疑问。我有一个查询(我使用的是MySql):
SELECT count(*) AS exist
FROM MeteoForecast AS MF
WHERE
MF.localization_id = 22
AND
DATE(MF.start_date) = DATE('2019/03/02')
将记录数返回到MeteoForecast表中,作为字段。
我想用这样
对于表中的浮点值,我有一个相当奇怪的问题。在我的产品表中,我有一个MIN_QUANTITY字段,其中包含0、0.01、0.25和1作为值。我想知道有多少行有0.01作为MIN_QUANTITY字段,所以我使用了以下查询:
SELECT COUNT(*) FROM PRODUCT WHERE MIN_QUANTITY = 0.01;
查询返回0。这显然是错误的,因为在这个领域中大约有1,200个0.01的实例。所以我试着:
SELECT COUNT(*) FROM PRODUCT WHERE MIN_QUANTITY = 0.25;
此查询适当地返回2,105,这是正确的计数。
我一直读到,My
我有一个有大约1亿条记录的大表,其中有start_date和end_date字段,还有DATE类型。我需要检查与某些日期范围重叠的数量,比如2013-08-20和2013-08-30之间的重叠,所以我使用。
SELECT COUNT(*) FROM myTable WHERE end_date >= '2013-08-20'
AND start_date <= '2013-08-30'
日期列已编入索引。重要的一点是,我正在寻找的日期范围总是在未来,而表中记录的主要部分是过去的(大约97-99百万)。所以,如果我添加一个列is_future - T
CREATE TABLE record (
id INT PRIMARY KEY,
parent_id INT,
count INT NOT NULL
)
我有一个如上定义的表。字段'parent_id‘指的是行的父级,因此整个数据看起来像n元树。
根据我的业务逻辑,当一行的字段'count‘被请求递增(例如,递增1)时,所有的祖先节点(或行)都应该被更新,以使'count’字段也递增1。
由于这个'count‘字段预计会频繁更新(比如1000次/秒),我相信这种递归更新会因为DBMS中巨大的级联写操作而大大减慢整个系统的速度。
就目前而言,我认为存
有时我会遇到一种奇怪的MySQL行为。让我们假设我有索引(type,rel,created),(type),(rel)。对于这样的查询,最佳选择是:
SELECT id FROM tbl
WHERE rel = 3 AND type = 3
ORDER BY created;
就是使用索引(type, rel, created)。但是MySQL决定将索引(type)和(rel)相交,这会导致较差的性能。下面是一个示例:
mysql> EXPLAIN
-> SELECT id FROM tbl
-> WHERE rel = 3 AND type = 3
我只想知道是否有一种方法来完成这个过程,只调用数据库一次。我基本上需要对数据库中的条目进行计数,其中今天的日期早于字段'date_out‘+7天。我是这样想的:
$today = date("Y-m-d"); //this is the format of date_out in my db!
$count_query = "SELECT count(*) FROM `group` WHERE ADDDATE('date_out', INTERVAL 7 DAY) <= $today ";
$count_result = mys
我在MySQL表中有一个名为"ColorCode“的字段,其值如下所示:
28373 GYY green
23423 HH red
23423 HH green
2343 QWE red
SKDJF blue
green
显示每种颜色出现的次数的SQL语句是什么,就像下面这个受PHP影响的伪代码:
SELECT COUNT(*) FROM products GROUP BY END(EXPLODE(ColorCode));
我有一千万张唱片。MySQL数据库如下所示:
tagline: varchar(255)
location: varchar(80)
experience: text (normally about 600 characters)
country varchar(50)
以前,我执行过这样的查询,结果是进行了完整的表扫描,这花费了太长的时间:
SELECT COUNT(*) FROM `mytable` WHERE
`tagline` LIKE '%sales%'
AND `location` LIKE '%texas%'
AND `experie
mysql> create index index_questions_on_publishedAt on questions(publishedAt);
ERROR 1317 (70100): Query execution was interrupted
mysql> select count(*) from questions;
+----------+
| count(*) |
+----------+
| 491773 |
+----------+
1 row in set (1.02 sec)
# Is it even reasonable for this q
//get the current member count
$sql = ("SELECT count(member_id) as total_members from exp_members");
$result = mysql_query($sql) or die(mysql_error());
$num_rows = mysql_num_rows($result);
if ($num_rows != 0) {
while($row = mysql_fetch_array($result)) {
$total_members = $row['