我的代码:
mysql> CREATE TABLE super (id int PRIMARY KEY NOT NULL AUTO_INCREMENT);
mysql> CREATE TABLE super2 (id int PRIMARY KEY NOT NULL AUTO_INCREMENT);
mysql> INSERT INTO super VALUES(1),(2);
mysql> INSERT INTO super2 VALUES(1),(3);
mysql> ALTER TABLE super ENGINE='MYIsam';
m
我在MySQL数据库中有一个表,其中包含以下字段:
ID | GENDER | BIRTHYEAR | POSTCODE
用户可以使用任意组合(即SELECT * FROM table WHERE GENDER = 'M' AND POSTCODE IN (1000, 2000);或SELECT * FROM table WHERE BIRTHYEAR = 1973;)中的任何字段来搜索表
在MySQL文档中,它使用了左索引。因此,如果我在所有4列上创建一个索引,那么如果没有使用ID字段,它就不会使用该索引。我是否需要为每个可能的字段组合(ID;ID/性别;ID/BIRTHYE
我正在尝试索引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';
我有一个非常大的MySQL表,其中包含大约150,000行数据。目前,当我尝试运行
SELECT * FROM table WHERE id = '1';
代码运行良好,因为ID字段是主索引。然而,对于该项目的最新发展,我必须按另一个字段搜索数据库。例如:
SELECT * FROM table WHERE product_id = '1';
这个字段以前没有索引;但是,我已经添加了一个,所以mysql现在对该字段进行索引,但是当我尝试运行上面的查询时,它的运行速度非常慢。EXPLAIN查询显示,当我已经为product_id字段添加了索引时,它却没有索引,因此
我需要修改现有的数据库以添加一列。因此,我还希望更新唯一字段以包含该新列。我正在尝试删除当前索引,但仍然收到错误MySQL Cannot drop index needed in a foreign key constraint
CREATE TABLE mytable_a (
ID TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(255) NOT NULL,
UNIQUE(Name)
) ENGINE=InnoDB;
CREATE TABLE mytable_b (
ID
我有一个mysql查询,但我不确定为查询中的所有字段建立索引的含义。我的意思是,是否可以索引CASE语句、Join语句和Where语句中的所有字段?索引字段是否有任何性能影响?
SELECT roots.id as root_id, root_words.*,
CASE
WHEN root_words.title LIKE '%text%' THEN 1
WHEN root_words.unsigned_title LIKE '%normalised_text%' THEN 2
WHEN unsigned_source LIKE '%normalise
可以更新字段的值,但同时限制它的值吗?:
UPDATE users SET num_apples=num_apples-1 WHERE xxx = ?
我不希望字段"num_apples“降到零以下。我能在一次操作中做到这一点吗?
谢谢
-更新
UPDATE users SET num_apples=num_apples-1 WHERE user_id = 123 AND num_apples > 0;
如果我只在"user_id“上有一个索引,而没有"num_apples",这会不会对性能造成不良影响?我不确定mysql是如何实现这个操作的。我希望use
我试图应用中描述的解决方法,但没有成功。
在我的场景中,有两个相关的表;我希望将ean_code字段从表product中删除。
创建表brand ( id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(512) NOT NULL,主键(id) ) ENGINE=InnoDB默认CHARSET=utf8创建表product ( id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(255) NOT NULL,ean\_code varchar(255)默认值NULL,brand\_id bigin
在我的user表中,有一个名为SeedNumber的列,它被声明为INT(11)。在MySQL数据库中,INT总是由4个字节表示,括号中的数字11并不意味着int值将被限制在11位数字内。很好地解释了这一点。
下面是字段SeedNumber的MySQL声明:
通过使用字段SeedNmb,我想获取用户。使用以下SQL查询:
SELECT * FROM user WHERE SeedNmb=99999617
在我的表中,值99999617是当前的最大值。这个查询返回一个没有任何问题的用户,如下图所示:
最近在SeedNumber注册的新用户等于12561361。当我在查询中使用
我搜索互联网和堆栈溢出寻找我的麻烦,但没有找到一个好的解决办法。
我有一个包含30万行的表(MySql MyISAM) (其中一列是blob字段)。
我必须使用:
DELETE FROM tablename WHERE id IN (1,4,7,88,568,.......)
在IN语法中有将近30,000个id。
差不多花了一个小时。而且,虽然我删除了10%的.MYD文件,但它并没有使文件更小,所以我运行OPTIMIZE TABLE...命令。它也能持续很长时间.(我应该使用它,因为磁盘空间对我很重要)。
当删除上述数据并恢复空间时,有什么方法可以提高性能?(增加缓冲区大小?哪个?否则呢?)
我有一个非常大的MySQL表约150,000行的数据。
SELECT * FROM table WHERE id = '1';
以上代码运行良好,因为ID字段是主索引。 但是,最近为了项目的发展,我不得不在另一个领域搜索数据库。 例如
SELECT * FROM table WHERE product_id = '1';
以上字段以前没有索引,但是,我已经将其添加为索引,但是当我尝试运行上述查询时,结果是非常缓慢的。 EXPLAIN查询显示,当我已经添加一个product_id字段时,没有索引,并且查询到20分钟到30分钟之间的就突然返回一行。
我完整的EXPL
摘要
我需要从14天以上的行中清除表的历史记录。
作为一个没有MySQL专家的人,我的搜索让我想到了以下几点:
delete
from SYS_VERROUS_POLICE
where idModificationPolice not in (
select distinct idModificationPolice
from SYS_VERROUS_POLICE
where date(dateHeureModification)
有时我会遇到一种奇怪的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
当我想更新斯芬克斯搜索索引中的记录时,我遇到了问题。
mysql> UPDATE indexname SET field = 'value' where id = 295;
ERROR 1064 (42000): sphinxql: syntax error, unexpected QUOTED_STRING, expecting CONST_INT (or 3 other tokens) near ''value' where id = 295'
是否可以在磁盘索引(不是RT)中更新某些文本字段?
我的斯芬克斯版本是:2.1.7-id6
大家好,我需要一个建议,如何有效地从足够大的文件上传数据到mySql数据库。所以我有两个文件5,85 6Gb和6GB的数据。为了上传,我使用了本地的`LOAD数据到文件中。第一个文件仍在上传(用于36小时)。当前索引大小为7,2GB。我有两个问题:
1)数据格式化为Lile:{string,int,int}。我不需要这个int值,所以我用一个类型为varchar(128)的字段创建了表,我的查询是LOAD DATA LOCAL INFILE "file" INTO TABLE "tale",所以数据是正确的(我的意思是只有字符串没有int字段)。
2)下一个负荷