我遇到了一个"太长"的查询.该查询在10个左右的表之间有50多个左连接.为了简要概述数据库模型,连接的表是存储特定数据类型数据的表(例如:date_fields,integer_fields,text_fields等),每个表都有一个值列,一个"datafield"id,和票证ID.查询是基于"票证"及其"数据字段"之间的关联表以编程方式构建的.
join语句如下所示:
...FROM tickets t
LEFT JOIN ticket_text_fields t001 ON(t.id=t001.ticket_id AND t001.textfield_id=7)
...
LEFT JOIN ticket_date_fields t056 ON(t.id=t056.ticket_id AND t056.datafield_id=434)
Run Code Online (Sandbox Code Playgroud)
在查询上使用说明时显示以下内容:
1 SIMPLE t ref idx_dataset_id idx_dataset_id 5 const 2871 Using where; Using temporary; Using filesort
1 SIMPLE t001 ref idx_ticket_id,idx_datafield_id idx_ticket_id 5 t.id 5
...
1 SIMPLE t056 ref idx_ticket_id,idx_datafield_id idx_ticket_id 5 t.id 8
Run Code Online (Sandbox Code Playgroud)
我可以采取什么方向来调整此查询?所有索引似乎都已到位.也许应该减少t表(票)行号(2871).有多少左连接太多了?数据域表是否应仅连接一次,然后查询每个所需的数据?
我被告知并在任何地方阅读它(但没有人敢解释为什么)当在多列上编写索引时,出于性能原因,我应该将最具选择性的列放在第一位.这是为什么?这是一个神话吗?
我在做:
explain select * from calibration;
Run Code Online (Sandbox Code Playgroud)
它说52133456345632行
当我做:
select count(*) from calibration;
Run Code Online (Sandbox Code Playgroud)
我正在收到52134563456961
谁能解释一下这里发生的事情?
我将用户"root"连接到我的数据库"test",我在本地托管以进行开发.其中我有"ratingcomment"表.出于某种原因,当我点击"ratingcomment"表时,phpMyAdmin向我显示以下错误:
Fehler
SQL-Befehl:
INSERT INTO `phpmyadmin`.`pma_history` (
`username` ,
`db` ,
`table` ,
`timevalue` ,
`sqlquery`
)
VALUES (
'root', 'test', 'ratingcomment', NOW( ) , 'SELECT * FROM `ratingcomment`'
)
MySQL meldet:
#1062 - Duplicate entry '838' for key 'PRIMARY'
Run Code Online (Sandbox Code Playgroud)
我使用谷歌找出以下内容
"This indicates that you have a UNIQUE or PRIMARY index on a table, and there is a duplicate value someone on one of the values in one of these indexes."
Run Code Online (Sandbox Code Playgroud)
但我还是不太明白这个错误!我使用主键,它为我的所有表自动递增,所以实际上表不存在问题.我有另一个名为"rating"的表,其中有一个"评论"列.这可能会导致问题吗?
看一看...
http://search.mysql.com/search?site=refman-41&q=using&lr=lang_en
官方MySQL站点没有解释USING命令.
你能做到吗?
我正在使用joomla CMS写入我的数据库,并编写了一个自定义前端.
我正在尝试获取'fulltext'行的内容.我试过mysql_fetch_assoc['fulltext']
和mysql_result($sql, 0, 'fulltext')
.两者都返回全文.这是查询字符串:
SELECT created, modified, title, introtext, 'fulltext', state, urls, created_by
FROM table_content
WHERE id='$id'
Run Code Online (Sandbox Code Playgroud)
这可能是我错过的非常明显的事情,因为全文似乎与没有引号的sql冲突.
任何帮助将一如既往地受到赞赏!
mysql ×3
sql ×3
corruption ×1
count ×1
duplicates ×1
indices ×1
join ×1
joomla ×1
keyword ×1
left-join ×1
optimization ×1
oracle ×1
php ×1
phpmyadmin ×1
using ×1