为什么或者如何在mysql上解决问题。
table xxx
-> id primary key
-> name varchar 255
-> data longblob
当我将100个文件存储到这个表中时,每个文件有100MB,这个表有10 to
然后尝试选择任何行...这需要很长时间
SELECT name FROM xxx WHERE id = 50 LIMIT 1;
大约需要8秒
我的问题可能在于,mysql在返回name之前读取整个行,它只有255个字符……因此,当我想列出100个文件的名称时,mysql读取10 GB并返回大约2KB的结果。
我有一个在MySQL上运行需要很长时间的SQL查询(需要几分钟)。这个查询是针对一个超过1亿行的表运行的,所以我对它的速度很慢并不感到惊讶。不过,理论上应该可以加快速度,因为我真的只想从大表(让我们称其为A)中取回在另一个表B中有引用的行。
所以我的问题是:
SELECT id FROM A, B where A.ref = B.ref;
(A有超过1亿行,而B只有几千行)。
我添加了INDEXes:
alter table A add index(ref);
alter table B add index(ref);
但它仍然非常慢(几分钟--一分钟就好了)。
不幸的是,我坚持使用MySQL
我有以下问题。
SELECT * FROM video LEFT OUTER JOIN comments ON (video.id = comments.video_id)
WHERE comments.posted_by_user = 1234 OR video.id in (1, 2, 3, 4)
我有video.id、comments.posted_by_user和comments.video_id的索引。但是,mysql会对视频表执行全表扫描,这会耗费大量时间。使用UNION而不是LEFT OUTER JOIN可以加快查询速度,但这不是一个选项,因为查询是由django ORM生成的。
我正在为一所学校做一个项目,其中有一个特殊的模块处理考勤系统。我正在使用LAMP(PHP、5.2+、MYSQL、5+)堆栈进行开发。目前,学校人数约为1500人,每年工作天数约为250天。另外,我必须保存5年的记录才能将其删除。
表结构为
studentId varchar(12)
date date
fn varchar(1) *forenoon*
af varchar(1) *afternoon*
如果我简单地使用一个表,这意味着5年内有1,875,000条记录。现在,我考虑为每个类(而不是部分)制作一个表,而不是这样一个庞大的数据库。因此,考虑到有12个类,我将有12个表,这意味着每个
我在该表中有一个mysql表注释,字段是标记,所有标记都是逗号分隔的,如
注释表
Name Reply Tags
a b new,old,facebook,fb
b d water,faebook,wall
b r wall,php,fb
c q name,facebook,email
a y weather,cold,old
a w twitter,next,pet,fb
我需要用mysql查询获取这个表中最常用的标记。
我有两张桌子如下所示
我在两个表上都有如下所示的综合索引:
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,
我试图同时构造新的mysql表:
public function connect() {
mysql_connect($this->host,$this->username,$this->password) or die("Could not connect. " . mysql_error());
mysql_select_db($this->table) or die("Could not select database. " . mysql_error());
return $this->buildD