我有一个包含近20个字段的表,其中有几个是已被Mysql索引的外键,现在我想创建一个包含3个FK字段的多索引索引, 首先尝试的是基于Fields
var table = $('#example').DataTable({
"ordering": false,
buttons: [{
extend: "print",
className: "btn dark btn-outline"
}, {
extend: "copy",
className: "btn red btn-outline"
}, {
extend: "pdf",
className: "btn green btn-outline"
}, {
extend: "excel",
className: "btn yellow btn-outline "
}, {
extend: "csv",
className: "btn purple btn-outline "
}, {
extend: "colvis",
className: "btn dark btn-outline",
text: "Columns"
}],
});
但我认为最好在索引而不是字段上设置索引,但我的后续工作面临错误:ALTER TABLE `Add`
Add INDEX `IX_Add_ON_IDCat_IDStatus_IDModeration_DateTo_DateAdded`
(`IDCategory`,`IDStatus`,`IDModeration`,`DateTo`,`DateAdded`);
Error Code: 1072. Key column 'FK_Add_Category' doesn't exist in table
我的问题是是否可以在存在的索引(在我的情况下是FK索引)中添加索引,并且有唯一的方法在列上创建索引?如果是的话我是如何创造的?
答案 0 :(得分:1)
索引是有序的值列表。它用于使查找表中的行更有效。
想想INDEX(last_name, first_name)
的常见,现实生活中的例子。如果你有他们的姓氏和名字,它可以很容易地查找某人。如果你只有他们的姓氏,那就很容易了。
但如果你拥有的只是他们的名字,那就没用了。
FOREIGN KEYs
需要查找。显然你有AddStatus
的FK,因为我看到了FK_Add_AddStatus
。那个FK生成了AddStatus
的查找。可以把它想象成first_name
上的单独的索引。它与last_name
&上的索引完全分开。 first_name
。
5列通常太多而无法放入单个索引中。
MySQL只为给定的SELECT
使用一个索引。
那么,现在,我问,SELECT
可能会使用那个5列索引?请告诉我们。我们可以讨论它是否有用,以及列是否处于最佳顺序。